理论教育 工具推荐:Android内存泄露检测

工具推荐:Android内存泄露检测

时间:2023-06-19 理论教育 版权反馈
【摘要】:在开发应用过程中,可以使用现成的工具来查看内存泄露情况。有关DDMS的知识在本章前面的内容中已经介绍过了,在接下来将讲解MAT工具的基本知识。MAT是Memory Analyzer Tool的缩写,是一个Eclipse插件,同时也有单独的RPC客户端。例如,打开一个.hprof文件后的界面如图4-14所示。图4-13 分析界面从图4-13中可以看到MAT的大部分功能,具体说明如下。换句话说,retained size是该对象被GC之后所能回收到内存的总和。

工具推荐:Android内存泄露检测

在开发应用过程中,可以使用现成的工具来查看内存泄露情况。例如DDMS和MAT。有关DDMS的知识在本章前面的内容中已经介绍过了,在接下来将讲解MAT工具的基本知识。

MAT是Memory Analyzer Tool的缩写,是一个Eclipse插件,同时也有单独的RPC客户端。编者使用的是MAT的Eclipse插件,使用插件要比RCP稍微方便一些。下载后的目录结构如图4-11所示。

978-7-111-51616-3-Part02-165.jpg

图4-11 MAT的文件目录

双击图4-12中的MemoryAnalyzer.exe可以打开MAT,打开后的界面如图4-12所示。

978-7-111-51616-3-Part02-166.jpg

图4-12 打开MAT后的界面

这样通过图4-13中的“File”菜单可以打开用DDMS生成的.hprof文件,具体生成.hprof文件的方法请读者参阅本章后面第4.3.5小节中的内容。例如,打开一个.hprof文件后的界面如图4-14所示。

978-7-111-51616-3-Part02-167.jpg

图4-13 分析界面

从图4-13中可以看到MAT的大部分功能,具体说明如下。

(1)Histogram:可以列出内存中的对象,对象的个数以及大小。

(2)Dominator Tree:可以列出那个线程,以及线程下面的那些对象占用的空间。

(3)Top consumers:通过图形列出最大的object。

(4)Leak Suspects:通过MA自动分析泄漏的原因。

单击“Histogram”选项后的界面如图4-14所示。(www.daowen.com)

978-7-111-51616-3-Part02-168.jpg

图4-14 Histogram界面

图4-15中主要选项的说明如下所示。

Objects:类的对象的数量。

Shallow size:就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。

Retained size:是该对象自己的shallow size,加上从该对象能直接或间接访问到对象的shallow size之和。换句话说,retained size是该对象被GC之后所能回收到内存的总和。

单击“Dominator Tree”选项后的界面如图4-15所示。

978-7-111-51616-3-Part02-169.jpg

图4-15 Dominator Tree界面

单击“Overview”选项后的界面如图4-16所示。

978-7-111-51616-3-Part02-170.jpg

图4-16 Overview界面

单击图4-16下方的“Leak Suspects”链接后,可以查看详细的内存报表。如图4-17所示。

978-7-111-51616-3-Part02-171.jpg

图4-17 Leak Suspects查看详细的内存报表

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈