Android内存泄露利器MLT(整合篇)

本人网易博客原文:http://hubingforever.blog.163.com/blog/static/171040579201243071752744/

一、前言
MemoryLeakTool Robin Hu 编写的一款用于监测Android进程内存使用情况的脚本工具,简称为 MLT
主要功能:
1、用于测试一个或多个进程是否有内存泄露。
2、用于自动提取一个Hprof文件,并转化为MAT所能识别的格式,以便分析。 该功能需要在你的程序的代码中先生成Hprof文件
Android2.3平台
当前版本:100
Android4.03平台
当前最新版本:101
历史版本:100
下载地址1( Android4.03平台
二、运行环境
运行平台:Window
依赖软件1:安装 JDK ,且将其bin目录加入到环境变量path中。
依赖软件2:安装 android-sdk4.0 ,且将其platform-tools目录加入到环境变量path中。
三、配置参数
MLT 解压到你的电脑上,用记事本打开其中的 config.bat 文件进行参数配置。
批处理配置文件config.bat如下:
rem the following var is for getProcessState.bat
set rawDatadir=rawData
set processName= android.process.acore ; com.android.systemui
rem set processShortName=a;b;c
set processShortName=
set outRoot=out
set statFilePrefix=stat
rem the following var is for getHprof.bat
set tools=D:\SDK\android-sdk4.0\tools
set hpInputFileDir=/sdcard
set hpInputFile=input.hprof
set hpRoot=hpTemp
注1:rawDatadir为“ps -x”提取出来的文件的目录
注2:processName需要统计内存的进程名字,可以同时统计多个,进程名之间用“;”进行分割。
注3:processShortName需要统计RSS的进程的名字的缩写形式,如果不坐设置或设置为空,这程序会根据processName自动生成。
注4:outRoot为对进程的RSS进行统计最后的生成文件的存放目录。
注5:statFilePrefix为对进程的RSS进行统计最后的生成文件的前缀。
注6:tools为hprof-conv.exe所在的目录。
注7:hpInputFileDir为手机中我们生成的hprof文件所在的目录。
注8:hpInputFileDir为手机中我们生成的hprof文件的名字。
四、进程PSS内存统计
PSS  (Proportional Set Size)是指进程实际使用的物理内存(比例分配共享库占用的内存)。
PSS 指标对于研发人员来说比较有用,对于测试人员请使用 RSS 指标,关于如何统计进程RSS的请参考后文。
确保手机连接电脑,确保手机已经开启debug模式, 然后双击 runMemoryPicker.bat 弹出界面,
 
 
界面中的interval time表示的是好久提取一次进程的内存信息 点击按钮开始内存统计, 在手机上进行一些反复操作后, 如果你想查看这些操作是否造成了config.bat中指定的进程是否有内存泄露。 请打开MLT目录下的out目录,里面已经生成了一些关于进程的内存取样值文件。 比如:stat_Memory_android.process.acore.txt;stat_Memory_com.android.systemui.txt
打开stat_Memory_android.process.acore.txt文件你会看到一些数值序列:
NativeSize:13172,13172,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232
DalvikSize:11015,11015,11143,11271,11335,11399,11527,11591,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655
NativeAllocated:13158,13159,13202,13202,13202,13203,13203,13205,4711,4732,4783,4770,4773,4781,4768,4770,4770,4770,4922,4923
DalvikAllocated:10775,10859,11038,11122,11206,11290,11374,11482,9898,10029,10229,10310,10405,10554,10651,10731,10811,10892,10338,10419
NativePSS:5189,5189,5249,5249,5249,5249,5249,5249,3701,3705,3713,3713,3713,3713,3713,3713,3713,3713,3808,3808
DalvikPSS:2894,2982,3167,3255,3347,3431,3519,3631,3175,3187,3195,3199,3203,3223,3231,3239,3243,3251,3312,3312
TotalPSS :20958,20993,21239,21326,21418,21502,21590,21702,9255,9276,9284,9288,9294,9317,9325,9333,9337,9345,9559,9559
我们首先需要关心的是 TotalPSS ,把TotalPSS里面的数值序列拷贝,用这些数值序列在excel中生成图表,  

 
查看其函数曲线最后是否稳定,如果不稳定,就说明可能存在内存泄露。
另外,下次重新对某个进程经常内存统计请在out目录中请先将老的统计文件删除。
五、进程RSS内存统计
RSS (Resident Set Size)表示的是进程实际使用物理内存大小(包含共享库占用的内存)
RSS 指标对于测试人员来说比较有用,对于研发人员最好使用PSS指标,关于如何统计进程PSS的请参考前文。
确保手机连接电脑,确保手机已经开启debug模式, 然后双击 runProcessStatePicker.bat 弹出界面,
 
 
界面中的interval time表示的是好久提取一次进程的内存信息 
点击按钮开始内存统计, 在手机上进行一些反复操作后, 如果你想查看这些操作是否造成了config.bat中指定的进程是否有内存泄露。 请打开MLT目录下的out目录,里面已经生成了一些关于进程的内存取样值文件。
 比如: stat_android.process.acore.txt;stat_com.android.systemui.txt
打开stat_android.process.acore.txt文件你会看到一些数值序列:
RssSize :56892,56892,56892,56892,56892,56892,56892,56892,56892,56892,56892,56924,56916,56916,56916,56916,56916,56916,56916,56916,56952,56980,56976,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56692,56712,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56736,56844,40400,40392,40392
把RssSize里面的数值序列拷贝,用这些数值序列在excel中生成图表,  

 
查看其函数曲线最后是否稳定,如果不稳定,就说明可能存在内存泄露。
另外,下次重新对某个进程经常内存统计请在out目录中请先将老的统计文件删除。
六、提取hprof文件
关于此的详细内容请参考《 Android内存泄露利器(hprof篇)


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值