У меня есть неправильное приложение, которое, похоже, течет. После краткого исследования профайлера большая часть памяти (80%) хранится в экземплярах java.lang.ref.Finalizer
. Я подозреваю, что финализаторы не работают.
Общей причиной этого является исключение, исключенное из финализатора. Однако javadoc для метода finalize
класса Object
(см. здесь), кажется, противоречит самому себе: он утверждает
Если нечеткое исключение вызывается методом finalize, исключение игнорируется и завершается завершение этого объекта.
но позже он также утверждает, что
Любое исключение, созданное методом finalize, приводит к остановке завершения этого объекта, но в противном случае игнорируется.
Чему я должен верить (т.е. завершается ли завершение или нет?), и есть ли у вас какие-либо советы о том, как исследовать такие кажущиеся утечки?
Спасибо