В примере, который вы показали, узел настроек и слушатель не могут быть восстановлены, пока не будут восстановлены настройки проекта.
Вам нужно будет явно удалить слушателя, но вам, вероятно, следует искать более надежное место, чем финализатор.
SettingsNode не будет восстановлен, пока не будет удален PropertyChangeListener. Использование анонимных классов для слушателей может быть распространенной причиной утечек памяти.
РЕДАКТИРОВАТЬ следующий вопрос от Алекса Б:
Если projectSettings существует в течение всего срока службы приложения, вы не можете удалить анонимного прослушивателя, поскольку у вас нет ссылки на него после его регистрации.
По мере создания нескольких экземпляров SettingsNode они будут добавлять своих слушателей в конструктор, но они никогда не будут удалены, так как никто не имеет ссылки на них. Это остановит удаление узлов настроек, а также у слушателей есть ссылки на узлы настроек