Android内存泄漏检测-LeakCanary
作者:网络转载 发布时间:[ 2015/12/21 13:37:50 ] 推荐标签:移动测试
前言:
Android内测泄漏是比较常见的问题,在没有造成OOM之前,在测试过程中,也会经常性的忽略这个问题,但在android碎片化严重的,还是存在很多内测泄漏造成OOM的问题在反馈。那么如何检测内存泄漏呢,当然我们可以通过MAT这些工具来排查哪些页面会出现内存泄漏,那么问题来了,测试周期本来很紧张,全页面覆盖耗费很大,不全面覆盖又会有一些漏缺,那么有没有一种嵌入到日常测试过程,发现内存泄漏即提示并且有定位的方法,无意中在git上看到一个开源项目:LeakCanary,本文是对LeakCanary具体的实践。
实践:
1.素材:
编辑器:Android Studio(AS)
项目:阅读具体项目源码
2.具体实现
2.1编辑build.gradle
需要加入具体依赖
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
这里需要说明一下,gradle依赖需要翻墙,不翻墙很有可能失败,好用公司网络(虽然说失败过很多次,但还是可以成功的)或者vpn,声明后重新构建去下载依赖
2.2编辑Application.class开启LeakCanary
该类即androidManifest中声明的application类(自定义的会居多,具体可以从androidManifest查看)
在复写的oncreate()方法中加入如下代码:
LeakCanary.install(this);
2.3安装应用到手机
在安装阅读app的同时,会在手机中安装一个监控app
2.4测试apk
此时可以开始日常测试啦,若有内测泄漏,会有toast提示正在dump数据
打开leak app可以看到一条具体的内测泄漏信息(这里在toast提示之后会有一定的延迟,过一会儿才会在leak app显示)
这里具体定位到具体tread和activtiy,你还可以借助heap dump数据进行mat工具分析
这里的例子是引用的对象没有释放造成的MainGridActivity页面的内存泄漏
2.5可share一些数据文件
这里提供share heap dump文件
从git的源码可以看到,dump的.hprof文件在sdcard/Download/leakcanary目录下,你也可以通过adb shell下进行查看,并且pull到pc端来进行分析
总结:
到这里,具体的实践差不多了,此工具可在日常测试过程中同时监控内存泄漏的情况,并有数据可以用来分析,更加符合用户场景,覆盖率更高,不错的一个工具,具体项目中可以用的到。这里只是简单在实际项目中试用,具体的原理和具体的内存泄漏分析还需要继续实践。若有具体实践过的同学也可以多多交流下哈。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11