Java:Memory Analyzer Tool (MAT) 用法:比较两个 heapdump
Posted
技术标签:
【中文标题】Java:Memory Analyzer Tool (MAT) 用法:比较两个 heapdump【英文标题】:Java: Memory Analyzer Tool (MAT) usage: comparing two heapdump 【发布时间】:2012-09-18 11:25:21 【问题描述】:我正在使用 Eclipse + MAT 插件。我可以看到一个 .hprof 文件堆历史记录,我拍摄了我的 Java 应用程序的两个快照。我希望当我比较两个堆转储时,我可以确定哪些对象实例增加了很多,以便我可以识别内存泄漏的可能性。
netbean 可以这样做吗?
【问题讨论】:
这里已经回答的问题重复:***.com/a/6242089/1078886 Compare heap dump (HPROF) files的可能重复 【参考方案1】:说明
-
在MAT 中打开两个堆转储
打开显示异常行为的堆转储的直方图(通常是内存或线程使用率较高的堆转储)。
-
将其与另一个堆转储进行比较
-
从列表中选择适当的堆转储
解读结果
类名:在应用中实例化的类,占用内存
对象:在其他堆转储上方或下方存在多少类实例的计数。
浅堆:给定类在内存中占用的字节数高于或低于另一个堆转储。
提示
由于 MAT 默认按降序排序我建议切换 Objects 和 Shallow Heap 列的顺序以查看每个列的顶部异常值两个方向。
通常您应该忽略纯 Java 类,如字符串、数组和映射,而专注于 您的应用 定义的类。
参考
Comparing Objects Official Eclipse Help Doc
【讨论】:
【参考方案2】:可以。见IBMs blog。
基本上你打开两者,然后在直方图中有一个额外的按钮(最右边的那个)来比较它。
【讨论】:
以上是关于Java:Memory Analyzer Tool (MAT) 用法:比较两个 heapdump的主要内容,如果未能解决你的问题,请参考以下文章
Java堆分析器 - Eclipse Memory Analyzer Tool(MAT)
Java堆分析器 - Eclipse Memory Analyzer Tool(MAT)
Memory Analyzer Tool定位Java heap space内存泄漏
手把手:Java内存泄漏分析Memory Analyzer Tool