IBM HeapAnalyzer是一款专业的JVM内存堆的图形分析工具,可以有效的列举堆的内存使用状况,分析java内存泄露的原因,主要用于分析Java SDK 1.3.1,1.4.x,5.0,6.0和7.0的堆转储。有需要的朋友可以下载!
软件特点
· 从表视图和树视图的父视图和子视图
· 地址搜索
· 根列表视图
· 同类型查看
· 配置恢复并保存
· IBM,Solaris®和HP-UX®Java ascii /二进制Java堆转储支持
· IBM Java系统转储支持:IBM的Java 7或更高版本需要处理的最新IBM Java系统转储文件格式
· 外观和感觉选项
· 自动检测截断的堆转储
· Java Profile v1.0.1 ascii和二进制Java堆转储支持
· Solaris hprof 1.0.1二进制Java堆转储支持
· heapdump文件命令行支持。请参阅“如何运行此工具”部分
· 支持IBM便携式堆转储.phd格式以及IBM堆转储.txt和.txt.gz
· 自动检测文件格式
· 支持控制台窗口
· 从heapdump创建一棵树
· 计算每个对象的大小
· 计算每个子树的总大小
· 查找子树中的总大小下降
· 按大小显示对象之间的差距
· 按大小显示对象
· 按总大小显示对象
· 通过孩子的数量显示对象
· 按大小显示类型
· 按计数/频率显示类型
· 显示类型的字母顺序
· 显示差距分布图
· 显示对象的详细信息
· 用正则表达式查找类型
· 在输入字段,树和文本中拖放支持
· 树形导航中的书签
·找到 可能的泄漏嫌疑人
IBM HeapAnalyzer使用教程
1.启动HeapAnalyzer
[初始画面]
2.选择文件 - >打开并选择一个堆转储文件
选择IBM堆转储文本文件,IBM便携式堆转储,Java Profile V1.0.1 ascii / binary Heap Dump或HeapAnalyzer处理文件以处理堆转储。
3.在处理堆转储期间显示进度。
[attach]263116[/attach]
4.如果您正在处理大型堆转储,则需要很长时间。以下是处理完成时的屏幕。请不要关闭这个窗口,直到你不需要这个heapdump。
内存泄漏嫌疑人在树视图的“传票泄漏嫌疑人”菜单下编译。
如果没有内存泄漏嫌疑,树视图默认情况下不显示。
点击Analysis菜单并选择Tree view菜单项来显示堆树。
5.以下是heapdump的树视图。
图标,
表示它已经被包含在树形视图中作为所有者对象的子对象
每个树节点的格式如下所示:
TotalSize(TotalSize / HeapSize%)[ObjectSize] NumberOfChildObject(根对象数)Name地址
6.在树形视图中,您可以看到节点的详细信息,您可以搜索父节点和子节点之间的总大小降落
或者您可以通过选择一个节点并单击鼠标右键来查找地址。
“搜索总大小下降”会发现父母的总大小之间的大小下降
和父母孩子的最大总规模。
如果从“搜索总大小下降”菜单中找不到任何大小的下拉菜单,则需要减少
选项中搜索的最小总大小下降。
您可以通过选择菜单“查找地址”在树形视图中查找地址
以下是地址搜索的结果:
7.如果要查看关于节点的详细信息,只需单击,您将在右窗格中获得有关信息。或者您可以选择以下菜单。
以下是heapdump树中详细节点信息的屏幕
8.您可以通过选择“添加书签”来放置书签来保存位置并继续导航树。
书签存储在“树状视图”菜单栏的“转到书签”菜单中。
你可以通过点击书签去树中保存的位置
通过点击“删除书签”菜单中的书签可以删除书签。
9.如果树上有很多孩子,可以在树的底部看到“NNNN more children”。
通过展开节点可以看到更多的孩子。
您也可以使用父节点中的“显示更多的孩子”菜单。
现在你可以看到更多的孩子。
10.您可以使用“查找泄漏嫌疑人”菜单找到可能的泄漏区域。
怀疑泄漏区域显示如下。
图标“,
”表示它不是根对象/类,并且此节点有父项。
如果你想显示更多的父母,你可以选择菜单“显示更多的父母”
如果你想从根对象显示,你可以选择菜单“显示从根”
如果要查看所有名称相同的对象,请从菜单中选择“列出相同类型”:
以下是查询的结果:
通过点击鼠标右键,你可以在树形视图中找到一个特定的对象,你可以找到一个特定对象的父母或孩子。
11.显示按总尺寸排序的对象。
对象按总大小进行显示和排序。
通过点击鼠标右键,你可以在树形视图中找到一个特定的对象,你可以找到一个特定对象的父母和孩子。
如果您单击TotalSize的列标题,该列将按相反顺序排序。
12.列出按大小排序的对象
对象按大小排序,方法是单击“大小”列标题。
13.列出按子项数排序的对象
对象通过点击“否”子列标题按子项数进行排序。
点击地址栏标题按地址顺序排序对象。
单击对象列标题按字母顺序对对象进行排序。
您也可以将每列移动到不同的位置。Address列在下面的屏幕中移到了TotalSize列的旁边。
14.按大小排序的列表类型
类型按大小的总和排序。
通过单击鼠标右键,可以找到具有特定对象的相同名称的对象。
15.按频率/计数排序的列表类型
16.按字母顺序排列的列表类型
选择根目录来显示根对象。
所有的根对象显示如下:
通过点击鼠标右键,你可以在树形视图中找到一个特定的对象,你可以找到一个特定对象的相同类型,父母和孩子。
16.列出按大小排序的对象之间的间隔
以下是按大小查看对象之间的差距
17.显示差距统计。
差距分布图。不要认为差距是自由空间。差距实际上是两个对象之间的差距。Java堆转储没有任何有关它们的信息。
18.您可以通过选择查看 - >选项菜单来配置设置
19.搜索对象/类型并按总大小进行排序。
在正则表达式中输入对象/类型名称。大写/小写事项!
以下是名称中包含“字节”的类型列表。
20.搜索对象/类型并按大小排序。
以下是名称中有“字节”的类型列表,按照子项的数量排序。
通过点击鼠标右键,你可以在树形视图中找到一个特定的对象,你可以找到一个特定对象的相同类型,父母和孩子。
通过输入确切的名称,我们可以查看有关特定类型的详细信息。
例如,您可以输入一个类型的确切名称:byte []
以下是byte []类型的列表以及有关byte []的详细信息
列标题包含更多信息。
TotalSize的总和是117,712字节。总和的大小是117,712字节。
有140个字节的对象[]
您可以通过选择搜索地址找到一个特定的地址
输入一个对象的地址
以下是地址搜索的结果
通过点击鼠标右键,你可以在树形视图中找到一个特定的对象,你可以找到一个特定对象的相同类型,父母和孩子。
22.你可以隐藏/显示状态栏。
23.你可以隐藏/显示控制台。