【发布时间】:2014-05-16 14:49:35
【问题描述】:
如何获取所有等待完成的对象的列表?,以便我可以手动完成它。
目前我没有得到直接方法来获取所有等待完成的对象。
【问题讨论】:
-
没有(合法的)方法可以做到这一点。如果您的对象没有最终确定,可能有两个原因:1. GC 尚未触发 2. 您仍然在某处持有这些对象的链接
-
我不感兴趣,但是一个搜索关键词应该是幻影参考。
-
尝试找出你的对象没有完成的原因,它应该可以解决你的内存泄漏问题。通过显式调用 finalize 方法,您无法预测何时以及是否会调用该方法。
-
我不知道您是否有内存泄漏或者您只是在完成时尝试执行一些代码。要指定在对象完成之前要做什么,您可以覆盖 Object.finalize()
-
最终确定对象来自第三方库或 ActiveMQ 等框架。我无法控制它们,在 Yourkit 中进行性能分析时,我发现等待最终确定的对象为 6K 到 20K 20VUSER 负载。我每 20 分钟触发一次 Full GC,然后运行 System.runFinalization,我看不到任何改进。我想明确获取等待完成的对象列表并使用 object.finalze() 释放它们
标签: java memory-leaks finalize finalization