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

2022-03-23 00:00:00 profiling java

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

netbean可以做到这一点吗?


解决方案

说明

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

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

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

解释结果

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

对象:类实例数量的计数高于或低于其他堆转储。

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

提示

由于MAT默认按降序排序,因此我建议切换对象和浅堆列的顺序,以查看每个列在两个方向上的最大异常值。

通常您应该忽略纯Java类,如String、Array和Maps,而专注于您的应用程序定义的类。

引用

Comparing Objects Official Eclipse Help Doc

相关文章