Можете ли вы рассчитывать на вызов .finalize ()?

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

Теперь мне интересно, связано ли это с неисправной аппаратурой или с реальной утечкой памяти, которую мне нужно устранить. профилировщик VisualVM, кажется, указывает на первое.

Вызывает беспокойство то, что у меня есть поток, который обрабатывает запросы и внутри запроса создает тысячи временных объектов. Иногда сокет, в который записывает этот поток, неожиданно закрывается, и поток обнаруживает исключение и умирает.

Когда поток умирает, не похоже, что .finalize () когда-либо вызывается для этих объектов. Это причина не доверять моим инструментам?

8
задан Kevin Dolan 24 October 2011 в 17:27
поделиться