1. finalize() 메소드를 통해 되살린 객체가 다시 소멸할때는 왜 finalize() method를 다시
호출하지 않고 종료하는가?
2. 1번 질문과 관련하여 finalize() method 와 GC는 직접적인 관련이 없어서 finalize() 를
호출한 객체는 정확히 언제 메모리에서 제거 될지 알수 없는데 왜 이렇게 JVM 이 구성된
것인가? 또한 각 method 종료시에 각각 GC을 수행하면 더욱 효율이 높을텐데 JVM이
refrence count 가 0이 된 객체를 그냥 놓아두고 일정한 시점에 이르러서 GC을 수행하는
이유는 무엇인가?
3. native method stack 이 의미하는 바는 native code 자체를 의미하는가 아니면 native
method가 실행중 사용하는 메모리 공간을 의미하는가?
오늘은 대략 위의 3개의 의문이 나왔던것 같습니다. 이중 2번 문항은
각 메소드 종료시 참조카운트가 0이 된 객체를 매번 sweep 하는것이 그렇게 효율이 높은것도
아니며 메모리에 직접적으로 delete 연산을 수행하지 않고 GC에 처리를 맡기는 것은 java의
정책적인 결정때문이라는 의견이 나왔습니다.
1,3 번 문항에 대해서는 아직 명확하지 않네요... 아시는분 리플...
호출하지 않고 종료하는가?
2. 1번 질문과 관련하여 finalize() method 와 GC는 직접적인 관련이 없어서 finalize() 를
호출한 객체는 정확히 언제 메모리에서 제거 될지 알수 없는데 왜 이렇게 JVM 이 구성된
것인가? 또한 각 method 종료시에 각각 GC을 수행하면 더욱 효율이 높을텐데 JVM이
refrence count 가 0이 된 객체를 그냥 놓아두고 일정한 시점에 이르러서 GC을 수행하는
이유는 무엇인가?
3. native method stack 이 의미하는 바는 native code 자체를 의미하는가 아니면 native
method가 실행중 사용하는 메모리 공간을 의미하는가?
오늘은 대략 위의 3개의 의문이 나왔던것 같습니다. 이중 2번 문항은
각 메소드 종료시 참조카운트가 0이 된 객체를 매번 sweep 하는것이 그렇게 효율이 높은것도
아니며 메모리에 직접적으로 delete 연산을 수행하지 않고 GC에 처리를 맡기는 것은 java의
정책적인 결정때문이라는 의견이 나왔습니다.
1,3 번 문항에 대해서는 아직 명확하지 않네요... 아시는분 리플...
댓글 0
.