码迷,mamicode.com
首页 > 其他好文 > 详细

DDMS工具检测内存泄露

时间:2020-04-28 00:36:35      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:开发   usb调试   介绍   avd   size   adb shell   code   logcat   选择   

DDMS工具检测内存泄露
DDMS是Android开发包中自带工具,可以测试app性能,用于发现内存问题。

1、环境搭建

     准备环境,网上随便都能找到,不再叙述了;

2、工具启动

虚拟机测试:

     确保测试环境中已经配置了Android虚拟机,cmd下输入如下命令启动:

     a、首先通过android list avd 查看建好的虚拟设备;

     b、通过命令emulator @{name}启动虚拟机;

     c、虚拟机启动成功后输入ddms启动测试工具;

联机测试:

     如果不使用虚拟机测试的话,可以联机进行测试,需要下载Android驱动,或者使用豌豆荚也可以,安装程序也比较方便,连接前需要将手机设置成USB调试模式,cmd下可以使用adb shell命令测试连接是否成功。

技术图片

     连接成功后,输入ddms可以成功启动工具。

技术图片

     工具左侧会显示已经运行的进程;如果想查看某个进程的运行log,可以点击左下角绿色加号Add a new logcat filter,输入filter name和PID。

     如果联机测试,你可能会发现手机里已经运行的被测程序,但是DDMS左侧的列表中没有显示被测程序的进程,那么别犹豫了,不是工具的问题,也不是手机配置的问题,直接让开发人员在APK中的AndroidManifest.xml文件中加上android:debuggable="true">重新打包。

3、测试应用

     左侧列表选中被测进程,点击左上角Show heap updates,点击VM heap视图中Cause GC按钮,手动执行内存回收操作,会显示当前进程的内存使用详细情况。

技术图片

     其中data object是数据对象,data object total size是进程中所有数据对象的内存总量,这个值大小决定了是否有内存泄露。

     在手机上不断操作被测应用,观察data object的total size的值,total size通常会稳定在一个范围,不断操作应用的过程中,系统会不断生成数据对象,在不断GC过程中,这些对象会被回收,total size会回落到某个特定范围。

     如果应用存在内存泄露情况,data object的total size在每次GC后的值都会比前一次GC后的值要大,反复测试过程中,total size会成明显上升的趋势。由此就可以确定被测应用有内存泄露迹象。

4、MAT问题定位

     发现内存问题之后,需要将heap内存信息导出来进行问题定位;点击DDMS左上角Dump HPROF file,选择位置保存;

     导出来的文件需要进行格式转换才能使用MAT打开进行分析,cmd命令运行:

./hprof-conv a.hprof b.hprof

a.hprof为到出文件的名成,b.hprof为转换后的名称。

使用MAT打开b.hprof进行分析,具体分析方法下篇文章介绍

DDMS工具检测内存泄露

标签:开发   usb调试   介绍   avd   size   adb shell   code   logcat   选择   

原文地址:https://www.cnblogs.com/nul1/p/12791212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!