내 응용 프로그램은 finalize() 메소드를 대체하는 객체가있는 타사 라이브러리 (JTDS 드라이버)를 사용합니다. 나는 그들이 finalize()
을 사용하지 않을 때의 모든 규칙을 지킨다 고 생각합니다 - 그것들이 적시에 또는 전혀 실행에 의존하지 않습니다.Java가 finalize()로 객체를 해제하지 않습니다. override
문제는 개체가 절대로 출시되지 않는다는 것입니다. Finalizer 큐에 걸려서 제거되지 않은 것 같습니다. 그들은 2 주에 걸쳐 천천히 구축되고 힙 공간에서 JVM을 실행합니다. 스레드 덤프는 Finalizer 스레드가 finalize()
을 호출하기 만하면됩니다. System.runFinalization()
으로 전화하면 객체가 마무리되고 finalizer 큐에서 제대로 제거됩니다 (더 이상 힙 덤프에 표시되지 않음).
왜 System.runFinalization()
은 개체를 제대로 제거하지만 Finalizer 스레드가 자체적으로 처리하지 않는 이유는 무엇입니까?
나는 누군가가 당신을 도울 수 있도록 어떻게 문제를 재현 할 수 있는지 보지 못했습니다. –
시작시 JVM에 어떤 인수를 전달합니까? –
이러한 finalize 방법에 대한 코드가 없으면 다른 사람이 정확히 어떻게 도움을 주길 기대합니까? – fge