자바 까페에 올리려다가 그냥 올려봅니다~ㅎㅎ


C언어 같은데서는 만약에 함수 호출을 너무 많이하면 스택 오버플로가 나잖아요?


근데 자바 JVM에서는 가비지 컬렉터가 미사용 메모리 회수를 하는 것으로 알고 있는데


만약에 메서드를 재귀로 호출하든 뭘 하든 해서 스택에 많이 쌓이면, 다시 pop 할 경우가 없다면 가비지 컬렉터가 알아서 지워주나요?


저번에 보니까 메서드 재귀호출을 몇천번을 빠르게 하니까 오버플로가 나긴 하던데,


이게 그렇게 많지 않고 빠르지 않게 메서드를 여러 번 호출하여 스택에 쌓인다고 가정했을 때,


이게 다시 pop될 일이 없다면 가비지 컬렉터가 지워 주나요? 찾아보니까 가비지 컬렉터는 단지 참조되지 않아서 사용 안되는 값만 지워준다던데, 이렇게 되면 메모리 스택에 계속 쌓여버릴 것 같은데....



만일 그렇다면, 다른 개발자분들은 처음으로 돌아갈때 어떻게 하시나요?


onCreate()를 호출하시는지 아니면 액티비티를 바꾸시는지 궁금하네요~


만약에 onCreate() 호출한다고 하면 그동안 메서드가 다 스택에 쌓여있을테고, 다시 pop될 일도 없는데  가비지컬렉터가 그걸 지워주지 않는다면 메모리 낭비가 좀 있을 것 같은데, 가비지 컬렉터가 알아서 잘 해주는지가 궁금하네요~ 

Entrepreneur, Embedded/Software Engineer