我有一个表现异常的应用程序,看起来存在内存泄漏。经过简短的分析,大部分内存(80%)由 java.lang.ref.Finalizer
实例占用。我怀疑 finalizers 无法正常运行。
这种情况的常见原因是finalizer抛出异常。然而, Object
类的 finalize
方法的 javadoc(例如此处)似乎自相矛盾:它声明
如果finalize方法抛出未捕获的异常,则会忽略该异常并终止该对象的最终处理。
但稍后它还声明
finalize方法抛出的任何异常都会导致此对象的终结被停止,但否则会被忽略。
我应该相信什么(即终结是否停止?),您对如何调查此类明显的内存泄漏有什么提示吗?
谢谢