9

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

netbean 能做到吗?

4

2 回答 2

4

指示

  1. 在MAT中打开两个堆转储
  2. 打开显示异常行为的任何堆转储的直方图(通常是具有较高内存或线程使用率的堆转储)。

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

解释结果

在此处输入图像描述

类名:在应用中实例化的类,占用内存

对象:在其他堆转储上方或下方存在多少类实例的计数

浅堆:给定类在其他堆转储上方或下方的内存中占用的字节数。

提示

由于 MAT 默认按降序排序,因此我建议切换ObjectsShallow Heap列的顺序,以查看每个方向上每个列的顶部异常值。

通常,您应该忽略纯 Java 类,如字符串、数组和映射,并专注于您的应用程序定义的类。

参考

比较对象 Eclipse 官方帮助文档

于 2019-04-30T17:50:23.113 回答
2

可以做到。请参阅IBM 博客

基本上你打开两者,然后在直方图中有一个额外的按钮(最右边的那个)来比较它。

于 2017-09-05T09:01:09.903 回答