美文网首页Android内存泄露
内存分析—Android Monitor详细操作

内存分析—Android Monitor详细操作

作者: 青禾tester | 来源:发表于2017-04-28 09:48 被阅读0次

    提前准备:手机上安装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详细操作

        本文链接:https://www.haomeiwen.com/subject/dusozttx.html