2010-02-04 5 views
1

당신은 사람들이 15 ~ 20 분 이내에 내가 동일한 주제에 4-5 질문을했다고 생각, 그래서 나는이에 대한 자습서를해야 할 수도 있습니다. 그러나 저는 GC에 대한 글을 통해 이러한 질문을 받고 있습니다.쓰레기 수집기 및 마무리() 메소드는

내 질문에 GC는 같은 개체가 finalize() 메서드에서 가비지 수집 대상이되지 않는 경우에도 수명주기의 한 번만 인스턴스에 대해 finalize() 메서드를 호출합니다. 그래서 내가 어떻게 GC가

답변

4

솔직히, 당신의 인생이 훨씬 더 좋을 것이다. 필자는 수년간 Java를 코딩 해 왔으며 파이널 라이저를 사용할 이유가 없었습니다.

그들은 잘 (때때로는 실행되지 않을 것이다!), 일반적으로 피타 정의되지 않은, 느리다.

은 외부 자원을 관리하는 대신 경우 닫기 가능한 인터페이스의 라인을 따라 뭔가를 수행하고 정리하기 위해 시도 {} 마지막으로 {} 블록을 사용합니다. 그렇지 않으면, 메모리를 자체적으로 정리하기 위해 언어를 신뢰할 수있는만큼 시도하십시오.

1

구현 의존 두 번째를 수집하는 동안은 전에 한 번 그 마무리() 메소드를 실행 한 것을 알게 것을 알고 싶었다. 아마도 VM에는 모든 객체에 비밀 비트가 있거나 이미 "완료"된 객체가 포함 된 테이블이 있습니다. 내 추측이 있다면, 나는 아직도 주위를 어슬렁하는 작은 것으로 예상되기 때문에 시스템의 모든 객체에 비트를 가진 이미 확정 객체의 아마 세트 조금 낭비 보이기 때문에 후자를 말할 것입니다. 다시

+0

비밀 비트. 마무리 작업은 병목 현상이 될 수 있습니다. –

+0

@tackline 흥미 롭습니다. 감사. –

0

아 :

주 당신이 정말 FORCE JVMTI의 ForceGargabeCollection를 사용하여 GC, 특별히 명시된 경우 파이 나라의 주제에 :

"이 기능은 발생하지 않습니다 finalizers를 실행할 수 있습니다. "

다시 한번, 당신은 아마 정말 그렇게하고 싶지 않아,하지만 당신이있는 경우 2K + 담당자와 GC 약 5 개 질문은 당신이 정말 FORCE를 JVMTI의 ForceGarbageCollection을 할 수 사용하는 것이 계속 반복하는 것이 재미 있다고 생각한다 GC. GC로 강제하는 방법에 대한

신뢰할 수있는 정보는 : 당신이 파이 나라의 존재를 잊어 버린 경우

http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection