內存分析—Android Monitor詳細操作

提前準備:手機上安裝debug包,并打開app運行

1、生成堆快照

(1)打開Android Studio

(2)android monitor視圖中,選擇monitors

(3)進程選擇:com.xxx.xx

(如出現android no debuggable application,AndroidStudio->Tools->Android->Enable ADB Integration active即可)

(4)操作時出現內存抖動/持續增加/卡頓,點擊按鈕initiate GC(標識1),隔幾秒點擊按鈕Dump Java Heap(標識2)

(5)過一會會生成堆快照文件(時長不確定,1-2min左右),堆快照命名規則:包名_日期.hprof


2、查看堆快照

(1)點擊左側capture按鈕,出現Allocation Tracking和Heap Snapshop文件夾

(2)選擇Heap Snapshop文件夾,最底部為最新生成的堆快照文件

(3)打開hprof文件,選擇App heap(一般默認為該項)

(4)打開右側Analyzer Tasks


3、對堆快照進行簡單分析

(1)打開Analyzer Tasks

(2)勾選Detect Leaked Activities(因當前僅關注是否出現內存泄露)

(3)點擊perform analysis按鈕(綠色小三角)

(4)檢測內存泄露結果:

如出現明顯內存泄露,analysis results會將出現泄露的引用全部列出來(紅色字符顯示),直接右鍵jump to source(只能跳到類開頭,不會到具體代碼),檢查原因;

如操作時發現內存增長未釋放,但并未檢測出來,還是有可能出現泄露,可使用MAT再做分析。


4、導出standard .hprof文件(Dalvik格式轉換成J2SE HPROF格式)

(1)captures,選擇待轉換文件,右鍵export to standard .hprof

(2)android monitor生成的hprof文件,不是標準Java Heap,MAT無法識別,因此需要轉換成標準Java Heap


5、其他點,通過logcat查看內存回收情況

有2種展示方式:Dalvik 和 ART

ART:

04-25 16:25:00.432 5213-5227/com.xxx.xxx I/art: Explicit concurrent mark sweep GC freed 15272(832KB) AllocSpace objects, 0(0B) LOS objects, 9% free, 144MB/160MB, paused 2.504ms total 102.860ms

Dalvik:

??????

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容