monkey中检查内存泄漏,其实是对一个操做屡次操做后看内存状况,内存泄漏具体的原理可百度,如今咱们梳理检测内存泄漏的方法:shell
测试前你须要安装:工具
1.MAT分析工具测试
2.使用工具事实监控内存指标,如今咱们看具体的操做spa
测试被测应用程序前,先保存没有运行前的运行程序的内存指标,并生成hprof文件用命令code
adb shell am dumpheap <进程名> /data/local/tmp/new.hprof,blog
并查看文件是否保存成功进程
这时你须要开启内存监控工具,实时监控内存,并在他执行过程当中看内存的指标变化是否很大,变化大,从1000一下就到2000,在到4000,内存持续增加,说明并无被GC回收,很明确这里就有内存泄漏了内存
下面是一个大神写的一个脚本好用class
set process=进程名 @adb shell dumpsys meminfo %process% | findstr "Pss" :m @adb shell dumpsys meminfo %process% | findstr "TOTAL" @ping -n 5 127.1>nul @goto m
构建成一个bat文件就能够执行了test
怎么运行测试,仍是要看具体的要求和本身构建的场景,通常跑一个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检测了一些多是泄漏的点,能够查看,具体分析方法下回再来