monkey中检查内存泄漏,实际上是对一个操作多次操作后看内存情况,内存泄漏具体的原理可百度,现在我们梳理检测内存泄漏的方法:
测试前你需要安装:
1.MAT分析工具
2.使用工具事实监控内存指标,现在我们看具体的操作
1测试应用程序先保存内存情况,可查看内存增长
测试被测应用程序前,先保存没有运行前的运行程序的内存指标,并生成hprof文件用命令
adb shell am dumpheap <进程名> /data/local/tmp/new.hprof,
并查看文件是否保存成功
2.运行被测试应用时开启内存检测工具
这时你需要开启内存监控工具,实时监控内存,并在他执行过程中看内存的指标变化是否很大,变化大,从1000一下就到2000,在到4000,内存持续增长,说明并没有被GC回收,很明确这里就有内存泄漏了
下面是一个大神写的一个脚本好用
set process=进程名 @adb shell dumpsys meminfo %process% | findstr "Pss" :m @adb shell dumpsys meminfo %process% | findstr "TOTAL" @ping -n 127.1>nul @goto m
构建成一个bat文件就可以执行了
3.运行被测试应用
怎么运行测试,还是要看具体的要求和自己构建的场景,一般跑一个APP最好是在5-6个小时形成一个曲线,才能看具体的一个实际情况,下面运行了两个比较简单的例子:
1.屏幕旋转会带来内存泄漏,我也试了下,如下命令:
2.在换成了随机运行并保存文件
把以上文件都保存,并把它pull到电脑,我的是E盘
用adb pull /data/local/tmp/new1.hprof e:\test\new.hprof到E盘中
注意因为MAT中不能够直接识别我们导出来的hprof文件,我们需要通过SDK的文件中带的hprof-conv进行转换
如:我从手机上导出的文件是NEW.hpof
之后使用MAT工具打开就好了
下面就是分析了,MAT检测了一些可能是泄漏的点,可以查看,具体分析方法下回再来