美文网首页
adb查找内存泄露

adb查找内存泄露

作者: 我家造地球 | 来源:发表于2019-06-18 22:57 被阅读0次

    在网上看到大部分都是集成LeakCanary来查找内存泄露,这种方式有代码的入侵性,个人不太喜欢。
    所以今天跟大家分享一下我经常使用的方式来查找内存泄露

    正文开始

    1.打开app跑monkey -v 后面都数据随便自己设定,数值越大,跑的时间越久
    adb shell monkey -p 包名 -v 100000
    
    2.当monkey结束后,点返回键一直退回到app主页面
    //可以等待几秒钟后执行多次,然后看Activities的数据变化
    adb shell dumpsys meminfo 包名
    
    图1.jpg

    执行完后看到一连串到数据,图1 只是截了其中一部分图,因为我们这里只要关注 Objects中的Activities 当它数值大于1的时候,大概就发生了Activity的内存泄露,

    3.当内存发生了泄露,我们使用命令获取app当前的内存文件
    adb shell am dumpheap 包名 文件路径
    //例如:adb shell am dumpheap com.example.paginglist /data/anr/xyz.hprof
    
    //这个Android的与标准的java hprof文件格式标准不一样,我们需要转换一下
    //通过platform-tools 中的hprof-conv 把刚才生成的hprof文件转换成mat可识别的文件
    hprof-conv  old.hprof  new.hprof
    

    4.后续我们只需要把转换后的new.hprof 放入MAT进行内存分析。关于MAT的使用网上有很多的使用教程,就不重复了。

    相关文章

      网友评论

          本文标题:adb查找内存泄露

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