Java:如何查找对特定类实例的所有引用

时间:2018-05-18 06:42:26

标签: java debugging

我有一个Java应用程序,其中特定对象是RAM占用的主要原因,这没关系。应用程序逻辑必须删除此对象实例并创建一个新对象实例。我怀疑老实例是通过一些参考保持活着的。

有没有办法使用Eclipse调试或其他任何内容列出特定类实例的所有引用?

1 个答案:

答案 0 :(得分:0)

使用Eclipse Memory Analyzer插件(org.eclipse.mat.feature.feature.group):

  • 将您的应用程序运行到怀疑内存泄漏的位置
  • 在Eclipse中打开Memory Analysis透视图
  • 点击"获取堆转储"工具栏中的按钮
    • Eclipse需要足够的内存来处理它,通常与分析的应用程序大小相同 - 您可能需要更改eclispe.ini以添加更多内存(如果您没有足够的内存,则可以改为使用使用jvisualvm创建内存转储然后关闭应用程序并使用增加的-Xmx启动eclipse)
  • 转储加载后,您可以浏览它以识别泄漏源(我不记得详细信息,但粗略地 - 浏览到您的班级,右键单击,查看带有传入引用的对象)