Java 응용 프로그램에서 열린 모델을 닫으면 일부 객체가 가비지 수집되지 않습니다. Eclipse MAT를 사용하여 GC 루트에 대한 경로를 검색하고 모델 닫기 후에 참조가 null로 설정되어 GC가 메모리를 정리할 수 있는지 확인합니다.Java JTree : 선택 상태 지우기
다음 참조 (Eclipse MAT 출력에서 발췌 한 내용)를 지울 수 없습니다.
myTree javax.swing.JTree uiTreeExpansionListener, keyListener, focusListener javax.swing.plaf.basic.BasicTreeUI$Handler pressedPath javax.swing.tree.TreePath lastPathComponent myClass
으로 myTree (JTree가)는 청취자의 값을 클리어/리셋하지 않는 경우, 기준은 myClass가의 목적에 lastPathComponent 유지이며 가비지 수집이 아니다.
트리에 참조를 유지하지 말라고하는 방법에 대한 아이디어가 있습니까?
편집 : 참조를 지우려면 다음 방법을 사용했지만 모든 참조 (위에서 언급 한)를 지우지는 않습니다.
public void clear() { cancelEditing(); collapseAll(); clearSelection(); clearToggledPaths(); resetKeyboardActions(); fireTreeCollapsed(null); }
모델을 어떻게 닫습니까? – dacwe
모델을 닫으면 기본적으로 널 참조 집합이 null로 설정됩니다. 모델이로드되었는지 확인하려면이 참조를 확인하십시오. null 인 경우, 모델 데이터를 어플리케이션 (GUI)에 표시하지 않습니다. –