在开发应用过程中,可以使用现成的工具来查看内存泄露情况。例如DDMS和MAT。有关DDMS的知识在本章前面的内容中已经介绍过了,在接下来将讲解MAT工具的基本知识。
MAT是Memory Analyzer Tool的缩写,是一个Eclipse插件,同时也有单独的RPC客户端。编者使用的是MAT的Eclipse插件,使用插件要比RCP稍微方便一些。下载后的目录结构如图4-11所示。
图4-11 MAT的文件目录
双击图4-12中的MemoryAnalyzer.exe可以打开MAT,打开后的界面如图4-12所示。
图4-12 打开MAT后的界面
这样通过图4-13中的“File”菜单可以打开用DDMS生成的.hprof文件,具体生成.hprof文件的方法请读者参阅本章后面第4.3.5小节中的内容。例如,打开一个.hprof文件后的界面如图4-14所示。
图4-13 分析界面
从图4-13中可以看到MAT的大部分功能,具体说明如下。
(1)Histogram:可以列出内存中的对象,对象的个数以及大小。
(2)Dominator Tree:可以列出那个线程,以及线程下面的那些对象占用的空间。
(3)Top consumers:通过图形列出最大的object。
(4)Leak Suspects:通过MA自动分析泄漏的原因。
单击“Histogram”选项后的界面如图4-14所示。(www.daowen.com)
图4-14 Histogram界面
图4-15中主要选项的说明如下所示。
Objects:类的对象的数量。
Shallow size:就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。
Retained size:是该对象自己的shallow size,加上从该对象能直接或间接访问到对象的shallow size之和。换句话说,retained size是该对象被GC之后所能回收到内存的总和。
单击“Dominator Tree”选项后的界面如图4-15所示。
图4-15 Dominator Tree界面
单击“Overview”选项后的界面如图4-16所示。
图4-16 Overview界面
单击图4-16下方的“Leak Suspects”链接后,可以查看详细的内存报表。如图4-17所示。
图4-17 Leak Suspects查看详细的内存报表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。