我阅读了许多关于finalizer工作原理的文章,这是我的理解:如果一个类实现了finalize方法,则JVM会在该对象上创建Finalizer实例作为看门狗。
当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后finalizer线程将从队列中选择这些对象并执行它们的finalize方法。
我的问题是:如何找到堆转储中的对象,它们的finalize方法由于某种原因没有完成,并开始堆积引用队列?
引用队列是否有特定顺序?
当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后finalizer线程将从队列中选择这些对象并执行它们的finalize方法。
我的问题是:如何找到堆转储中的对象,它们的finalize方法由于某种原因没有完成,并开始堆积引用队列?
引用队列是否有特定顺序?
finalize()
的类执行文本搜索 - 在您的代码库中有太多的候选项吗? - Hulk