内存分析—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:

??????

你可能感兴趣的:(内存分析—Android Monitor详细操作)