Java:内存分析工具(MAT)用法:比较两个堆转储文件

10

我正在使用 Eclipse + MAT 插件。我能够看到一个 .hprof 文件的堆历史记录,我对我的 Java 应用程序进行了两个快照。我希望当我比较两个堆转储时,我可以找出哪些对象实例增加了很多,以便我可以确定内存泄漏的潜力。

Netbean 能做到这一点吗?


1
这是一个已经在此处回答过的问题的副本:https://dev59.com/Gm025IYBdhLWcg3wEhdb#6242089 - try-catch-finally
1
可能是比较堆转储(HPROF)文件的重复问题。 - Thirler
2个回答

10

说明

  1. MAT中打开两个堆转储文件。
  2. 打开直观展示异常行为的堆转储文件的柱状图(通常是内存使用率或线程使用率更高的那个)。

enter image description here

  1. 将其与另一个堆转储文件进行比较。

enter image description here

  1. 从列表中选择适当的堆转储文件。

enter image description here

解释结果

enter image description here

类名称:在应用程序中实例化并占用内存的类。

对象:该类实例数,高于或低于另一个堆转储文件。

浅堆:在内存中占用给定类的字节数,高于或低于另一个堆转储文件。

提示

由于MAT默认按降序排序,因此建议切换对象浅堆列的排序方式,以查看两个方向上的前几个异常值。

通常应忽略纯Java类(如Strings、Arrays和Maps),并关注您的应用程序定义的类。

参考

比较数据官方Eclipse帮助文档


2
可以做到。请参见IBM博客。基本上,您需要打开两个文件,然后在直方图中有一个额外的按钮(最右侧)用于比较它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接