展开

IBM HeapAnalyzer是一款JAVA内存泄露检测工具。下载之后首先阅读一下readme,这上面详细写了HeapAnalyzer的使用方法。

可以在命令行中输入<Java path>java –Xmx[heapsize] –jar ha26.jar <heapdump file>来启动工具并加载heapdump文件。对于比较大的heapdump,将-Xmx设置一个较大的值(大于heapdump的大小),来避免加载过程中的OOM。对于64位机器上产生的超大heapdump,个人机器上分析就不大可能了。
打开heapdump文件后,我一般点击“Analysis”里的“Tree View”,以树的形式从根节点展示内存对象分配的信息

第一行java.lang.ref.Refenrence这个class及它的76个children占用了67%的已用堆大小(31M/46M),它本身仅占用了76bits。双击java.lang.ref.Refenrence,我们可以看到它所引用的两个子节点。其中一个子节点java.lang.ref.Finalizer后的67%指引我们内存泄漏的问题应该在它的引用上。

接下去你可以逐级展开,或者右键点击“Locate a leak suspect”,让HeapAnalyzer帮你找到泄漏可能发生的地方。泄漏一般发生在那些拥有“超乎寻常多”的引用(子节点)的class上,正是这些创建后没有释放、累积了成千上百的对象,造成了OutOfMemory。右键中的“Go to the largest drop subtrees”也是以此为原理而设的,它的解释为:
“Search for total size drop” will find a size drop between the total size of a parent and the biggest total size of child of the parent.
因为出现泄漏的点,每个子节点占用的内存空间不大,但是巨大的数量会导致父节点占用的total size很大。不过反过来寻找到的点都是泄漏发生的地方这种说法是不成立的,否则也不需要我们来分析了。
加载全部内容
猿编程电脑客户端86M26445人在玩很多家长想要培养孩子的思维能力,让孩子使...
下载
易简玖大猫运行库合集正式版971M15100人在玩如果您是游戏开发人员的话可以试试这款易简...
下载
黑群晖DSM7.0iso镜像版216M13866人在玩各位编程行业的朋友们注意了,黑群晖DSM...
下载
Pageoffice序列号10K5828人在玩Pageoffice是很贵的一款软件了...
下载
pageoffice永久免费版30M5687人在玩小伙伴们我掐指一算,你可能缺少一款pag...
下载
hyperMILL2019特别版4G4365人在玩各位编程加工行业的朋友们注意了,这款hy...
下载
GC POWERSTATION中文版11M3033人在玩如果您在寻找一款功能强大的PCB设计后期...
下载
Keil ARM MDK5永久免费版713M2828人在玩各位编程行业的小伙伴们注意了,KeilA...
下载
javaw.exe文件69K2711人在玩各位java编程行业的朋友们注意了,如果...
下载
Toad for Oracle中文补丁3M2670人在玩使用ToadforOracle这款编程软...
下载