内存采集工具Android Device monitor
那么其实在Android SDK中还自带了一个工具monitor,可以帮助我们采集内存信息
我们首先进入到SDK下的tools路径下,执行monitor
cd /Users/liyanjun/testing/Android/SDK/tools
./monitor
image
打开这个工具之后,我们可以看到,左边是我们的模拟器,如果这里没有,那就要去看adb是不是能够连上你的设备。另外需要注意,真机是看不到进程的,如果用真机,模拟器默认都是debug模式,所呢我们能够看到各个应用的进程。
那么怎么用他来收集内存信息呢?我们点击这个heap按钮
image
这个界面,实际上就是我们内存的一个收集器,首先在左边要现选中我们的应用,例如豆瓣,选中它以后呢,点击Update Heap按钮,更新堆内存,然后我们可以看到右边刷出来了一些内存信息,实际上就是豆瓣这个应用当前所占的内存的一个情况。
image
如果我们吧这个个应用暂时先杀掉,会发现内存信息没了。
Heap Size是总共分配的内存
Allocated表示已经使用的内存
Free表示还没有用的内存,Used表示占用的百分比
Objects是所有的对象的个数,就是我这个应用他启动以后他创建的内存对象总共有多少个
然后下面这一块,data object表示数据对象,总共是多少个,总共有多少兆,最小的是多少,最大的是多少,中位数是多少,平均是多少,然后下面各种不同的对象,再下面是一个简单的图表。
image.png
点击图中按钮可以将内存信息文件保存到本地
在实际测试过程中我们需要通过不断的操作app,来观察内存数据的变化来确认有没有进行回收
内存分析工具Memory Analysis Tools
Eclipse Memory Analysis Tools (MAT) 是一个分析 Java堆数据的专业工具,用它
可以定位内存泄漏的原因。
下载地址:https://www.eclipse.org/mat/downloads.php
可以根据自己的系统去下载安装,如果你本机没有装jdk,它会提示让你装jdk
这里有一点需要注意,我们上面收集的内存文件并不能直接用这个工具去分析,需要进行转换,在sdk里面自带了一个hprof-conv是专门用来做转换的工具
cd /Users/liyanjun/Desktop/
hprof-conv com.douban.frodo.hprof douban.hprof
转换完成之后会生成一个新的文件,我们打开工具,解析转换后的文件
image.png
然后这块我们可以点取消,什么都不做
image.png
解析完成之后效果如下图
image.png
首先是一个总的报告,在饼状图上有各种分类,下面有各类选项,我们先看这个Leak Suspects,这里会直接告诉我们有哪些问题
image.png
如图,它会把问题1、问题2、问题3.。。。。分别列出来
image.png
我们再看下Component Reoprt组件,他是显示在右边的,相当于一个帮助文档
image.png
Histogram表示历史,一般是对数据做对比
image.png
这里显示的是本次的数据,对象、对象个数,以及对象自身占用的内存,对象本身以及引用的其他对象所占用的大小,要做数据对比的话,我们需要添加一个之前的数据,点击Navigation History添加
image.png
image.png
这个时候我们把本次的数据添加进来了,然后再去导入一个,之后点击红色的叹号按钮,数据会一前一后的排列,方便我们分析各个对象占用内存的变化
image.png
通常情况下,都是做这种对比测试的,正常情况下,不同的版本,相同的业务,内存数据不应该有太多的变化









网友评论