Memory Analyzer Tool(MAT)不显示无法访问的对象

时间:2016-04-27 19:27:58

标签: mat

我使用了独立的EMA(1.5.0)和eclipse插件(在eclipse 4.5中)来分析我的堆转储。

我想看到任何无法访问的对象信息,我试图在我的首选项和-keep_unreachable_objects的命令行选项中启用keep_unreachable_objects选项,如上所述here

但我仍然没有Java基础知识 - >无法到达的物体直方图。

这是因为我的堆转储中没有无法访问的对象吗?我想过,一旦启用,至少我应该看到" Java Basics"下拉列表。

感谢。

2 个答案:

答案 0 :(得分:0)

禁用MAT->首选项->内存分析器->保留无法访问的对象。

然后是Java基础知识->无法访问的对象直方图应开始显示。

这似乎有悖直觉,但是我想启用该首选项后,MAT不会区分引用对象和无法访问对象,因此Java Basics中不提供不可访问对象直方图。

答案 1 :(得分:0)

您可以从以下位置查看文档:{​​{3}}

正如@justAnotherGuy 所说,您应该禁用保持无法访问的对象,然后您将在 Java 基础知识中看到无法访问的对象直方图。 如果你在 Keep Unreachable objects enable 之前解析转储,你应该

  1. 关闭快照
  2. 使用 Window > Heap Dump History 右键单击​​选择堆转储,删除索引文件
  3. 使用“窗口”>“首选项”>“内存分析器”禁用“保留无法访问的对象” 然后重新解析转储,您将在 Java Basics 中看到 Unreachable Objects Histogram。

此外,如果启用 Keep Unreachable objects,您还可以看到无法访问的对象:

  1. 选择 Java Basics > GC Roots 查询。
  2. 选择“无法访问的对象”行。
  3. 对该行运行“显示保留集”查询。