내 프로그램에서 여러 개의 Swingworker
스레드를 사용하며 완료 후 각 스레드의 메모리를 비워야합니다. 내 스레드가 doInBackground()
메소드를 완료하여 종료하는지 또는 cancel()
에 의해 중지되는지 여부에 상관없이 스레드 자체는 거기에 머물러 있습니다 (여전히 Jconsole에 표시됨).Swingworker가 할당 한 메모리를 확보하는 방법은 무엇입니까?
Swingworker
인스턴스를 역 참조하고 강제로 가비지 수집을 수행하지만 Java 프로세스는 메모리를 해제하지 않습니다 (예 : Windows 작업 관리자에서 볼 수 있음).
어떻게 종료 된 Swingworker
스레드를 완전히 제거 할 수 있습니까?
또는 복잡한 처리 중에 여러 곳에서 할당하는 메모리를 어떻게 확보 할 수 있습니까?
모든 조언을 가장 중요하게 생각합니다. 감사.
Okay , 고맙습니다. JVM이 메모리를 운영체제로 되돌리기를 꺼린다는 성명서는 상황에 대한 올바른 설명이다. 그리고 예, JConsole은 가비지 콜렉션을 강제 실행할 때 힙 메모리가 리턴됨을 보여줍니다. – Lulach