注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

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

2012-05-30 07:17:52|  分类: Android内存 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、前言
MemoryLeakToolRobin 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弹出界面,
 Android内存泄露利器MLT(整合篇) - hubingforever - 民主与科学
 
界面中的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中生成图表,  
Android内存泄露利器MLT(整合篇) - hubingforever - 民主与科学
 
查看其函数曲线最后是否稳定,如果不稳定,就说明可能存在内存泄露。
另外,下次重新对某个进程经常内存统计请在out目录中请先将老的统计文件删除。
五、进程RSS内存统计
RSS(Resident Set Size)表示的是进程实际使用物理内存大小(包含共享库占用的内存)
RSS指标对于测试人员来说比较有用,对于研发人员最好使用PSS指标,关于如何统计进程PSS的请参考前文。
确保手机连接电脑,确保手机已经开启debug模式, 然后双击runProcessStatePicker.bat弹出界面,
 Android内存泄露利器MLT(整合篇) - hubingforever - 民主与科学
 
界面中的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中生成图表,  
Android内存泄露利器MLT(整合篇) - hubingforever - 民主与科学
 
查看其函数曲线最后是否稳定,如果不稳定,就说明可能存在内存泄露。
另外,下次重新对某个进程经常内存统计请在out目录中请先将老的统计文件删除。
六、提取hprof文件
关于此的详细内容请参考《Android内存泄露利器(hprof篇)

  评论这张
 
阅读(1721)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017