美文网首页Android studio【idea】Android基础知识
通过Memory Analyzer分析内存泄漏的解决过程

通过Memory Analyzer分析内存泄漏的解决过程

作者: 带着二娃去遛弯 | 来源:发表于2019-08-19 17:42 被阅读38次

    首先你得有一个dump文件

    dump文件获取方式

    1. vm参数配置

    -XX:+PrintGCApplicationStoppedTime
    -XX:+PrintGCDateStamps
    -XX:+PrintGCDetails
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=c:/heap.bin

    1. jmap指令
      jmap -dump:<dump-options><pid>
      比如 jmap -F -dump:live,file=jmap.hprof [PID] 导出内存dump文件

    通过Memory Analyzer分析

    在overview下整个内存的使用情况:


    image.png

    在dominator_tree视图下,该视图列举了所有的大内存对象

    image.png

    右击查看代码调用该对象的类

    image.png

    在我的代码里面是这样的情况:

    image.png

    这个map对象占用大量的内存了,到这里问题原因已经找到,接下来结合代码逻辑修改就可以了,很简单的哦!

    大家也可以通过ema自动生成Leak Supects Report 视图中查看可能造成OOM的对象分析


    image.png
    image.png

    我这里是有10个大对象


    image.png

    根据这里给出的地址号去dominator_tree查找对应的被对象,比如这里的
    0x6c640b690


    image.png

    好了,分享结束!!!

    相关文章

      网友评论

        本文标题:通过Memory Analyzer分析内存泄漏的解决过程

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