使用Eclipse Memory Analyzer进行内存泄漏分析三部曲
一、准备工作
分析较大的dump文件(根据我自己的经验2g以上的dump文件就需要使用以下介绍的方法,不然mat会出现oom)需要调整虚拟机参数
找个64位的系统在memoryanalyzer.ini设置-xmx2g
如果是32位的xp可以使用下面的方法进行尝试:安装jrockit 6.0的jdkmat使用jrockit的jdk来启动
因为我们就是为了查找内存泄漏的问题,所以保持默认选项直接点“finish”就可以。
mat会非常直观的展现内存泄漏的可疑点,类似下面的报表可以直接看到某个线程占用了大量的内存

问题的详细分析信息:

第三步,开始寻找导致内存泄漏的代码点。这时往往需要打开对象依赖关系树形视图,点击如图按钮即可。

这时会看到如下视图

这个视图的左边大区域可以看到对象的依赖关系,选中某个对象以后可以在左边小窗口查看对象的一些属性。如果属性的值是一些内存地址你还可以点击工具栏的搜索按钮来搜索具体的对象信息。在进行具体分析的时候mat只是起了帮助你进行分析的工具的功能,oom问题分析没有固定方法和准则。只能发挥你敏锐的洞察力,结合源代码,对内存中的对象进行分析从而找到代码中的bug.