Java JTree: очистить состояние выбора (сбросить ссылки)

В моем приложении Java, когда я закрываю открытую модель, некоторые объекты не собираются сборщиком мусора. Я использую Eclipse MAT для определения путей к корню сборщика мусора и убеждаюсь, что для ссылок установлено значение null после закрытия модели, чтобы сборщик мусора мог очистить память.

Я не могу удалить следующие ссылки (отрывок из выходных данных Eclipse MAT).

myTree javax.swing.JTree
   uiTreeExpansionListener, keyListener, focusListener javax.swing.plaf.basic.BasicTreeUI$Handler
         pressedPath javax.swing.tree.TreePath
            lastPathComponent myClass

Если myTree (JTree) не сбрасывает / не очищает значение в слушателях, то в lastPathComponent сохраняется ссылка на объект myClass. и это не сборщик мусора.

Есть идеи, как сказать дереву не поддерживать ссылки?

Изменить: я использовал следующий метод для очистки ссылок, но он не очищает все (упомянутые выше) ссылки.

    public void clear() {
        cancelEditing();
        collapseAll();
        clearSelection();
        clearToggledPaths();
        resetKeyboardActions();
        fireTreeCollapsed(null);
    }

person Santosh Tiwari    schedule 17.05.2012    source источник
comment
Закрытие модели в основном подразумевает, что я установил кучу ссылок на null. Я проверяю эти ссылки, чтобы увидеть, загружена ли модель. Если значение равно null, я не отображаю данные модели в моем приложении (GUI).   -  person Santosh Tiwari    schedule 18.05.2012


Ответы (1)


Я нашел обходной путь (а не чистое и элегантное решение), по крайней мере, для решения моей проблемы. Следующий код выполняет работу по освобождению всех (известных) ссылок.

public void clear() {
   cancelEditing();
   clearSelection();
   clearToggledPaths();
   resetKeyboardActions();
   updateUI();
}

Поскольку мне нужно выполнить описанный выше метод при закрытии модели, производительность может не сильно пострадать. Но я бы предпочел более элегантное (и концептуально верное) решение, если это возможно.

person Santosh Tiwari    schedule 18.05.2012