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