Устранение утечки памяти в java: финализация?

У меня есть плохо работающее приложение, которое, кажется, утекает. После краткого исследования профайлером, большая часть памяти (80%) находится в java.lang.ref.Finalizer экземплярах. Я подозреваю, что финализаторы не выполняются.

Общей причиной этого, похоже, являются исключения, выбрасываемые финализатором. Однако javadoc для метода finalize класса Object (см., например, здесь), кажется, противоречит сам себе: в нем говорится

Если метод finalize выбрасывает не пойманное исключение, исключение игнорируется и финализация этого объекта завершается.

но позже также говорится, что

Любое исключение, брошенное методом finalize, приводит к остановке финализации этого объекта, но в остальном игнорируется.

Чему я должен верить (т.е., остановлена ли финализация или нет?), и есть ли у вас какие-нибудь советы по исследованию таких очевидных утечек?

Спасибо

13
задан Wyzard --Stop Harming Monica-- 4 October 2011 в 08:23
поделиться