Java: шаблон наблюдателя и сборщик мусора - PullRequest
2 голосов
/ 26 октября 2011

Я реализовал TableModel, регистры которого запускают PropertyChangeEvents.Моя TableModel прослушивает эти события для запуска TableModelEvents для обновления лежащего в основе JTable.

Если TableModel очищается или обновляется новыми регистрами ... имеет TableModel для вызова метода «removePropertyChangeListener» в каждом регистре в порядкепозволить GC собирать эти регистры?

предположить, что нет другой живой ссылки на эти регистры.

1 Ответ

3 голосов
/ 26 октября 2011

Нет.Объект register имеет ссылку на вашу табличную модель (через слушателя).Так что, если регистр больше недоступен, он будет собирать мусор.

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

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

...