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 5 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檢測了一些可能是泄漏的點,可以查看,具體分析方法下回再來