Когда finalize вызывается для синглтонов при освобождении загрузчика классов?

Под "выпущенным" я подразумеваю, что не осталось никаких ссылок на загрузчик классов.

Мы сталкиваемся с проблемой, когда часто повторно развертываемое приложение Java EE съедает постоянное пространство. Анализ показывает, что синглтон в приложении Java EE передал ссылки на объекты загрузчика классов приложения за пределами приложения (в нарушение правил Java EE) и не очищает их, когда приложение не развернуто.

Предполагая, что не осталось других ссылок на синглтон или объект класса, будет ли вызываться finalize () синглтона, когда будет выпущен загрузчик классов его класса? Я бы хотел удалить там нечестные встроенные ссылки.Или я нахожусь в ловушке-22, где finalize не будет вызван до тех пор, пока сам загрузчик классов не будет обработан сборщиком мусора - и, следовательно, никогда не будет вызван из-за мошеннических внешних ссылок?

Главный вопрос здесь, возможно, таков:

Будет ли объект класса собираться мусором в этом случае, когда его загрузчик классов еще не может быть? Это может зависеть от спецификации поведения загрузчика классов, или может быть зависит от реализации.

Ссылки (иного рода! ;-)) приветствуются, но в них нет необходимости.

5
задан Arjan Tijms 25 July 2013 в 19:05
поделиться