java – 检查垃圾收集器是否可以获取对象
有没有办法检查垃圾收集器是否可以获取对象?
在我的代码中的某处,我有一个对象的引用: MyObject mo = myObject; 然后,通过Eclipse Debugger,我得到了对象的内存位置.然后,我将引用设置为null: mo = null; 有没有办法检查以前引用的对象现在是否适合垃圾收集,或者是否有某个地方另外引用它? 非常感谢, 斯特凡 解决方法
您不能在运行时使用任意对象执行此操作,事实上,确定性地执行此操作并非完全可能.但是,根据您的需要,有两种选择可能适合:
>将引用设置为null后进行堆转储,然后将其加载到堆分析器工具(如jhat)或支持此分析器的分析器中.这些工具应该让您遍历GC根路径,从而检查您的对象是否仍然可以访问. 总的来说,我同意最好的选择是了解内存泄漏问题并设计应用程序以避免它们.如果确实有内存泄漏,那么它应该足够明显,然后您可以集中精力找到问题(再次通过转储和分析堆不正确的对象). 上面的步骤相对耗时,并且不应该是每次更改后为了让自己安心而做的事情,而是您用来调查特定问题的工具. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |