美文网首页
内存泄漏汇总

内存泄漏汇总

作者: SMSM | 来源:发表于2017-12-07 22:47 被阅读141次

    优化内存从以下几点搞起

    1. 内存泄漏 (未取消Handler发送的message、被静态引用)
    2. 大对象 (OOM)
      3.频繁的波动,会引起频繁的GC有可能导致ANR

    Memory Monitor:跟踪整个app的内存变化情况。
    Heap Viewer:查看当前内存快照,便于对比分析哪些对象有可能发生了泄漏。
    Allocation Tracker:追踪内存对象的来源。
    http://hukai.me/android-performance-memory/

    定位方式如下

    AS提供的Monitor展示内存波动 内存波动 alloc 屏幕快照 2017-12-08 下午9.38.07.png

    12-08 08:47:24.064 7165-14687/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 3575K, 50% free 18579K/36504K, paused 31ms, total 31ms
    12-08 08:47:24.396 7165-14688/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 5017K, 49% free 18831K/36504K, paused 44ms, total 44ms
    12-08 08:47:25.112 7165-14687/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 5931K, 51% free 18225K/36504K, paused 13ms, total 13ms
    12-08 08:47:26.192 7165-14688/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 4689K, 50% free 18519K/36504K, paused 24ms, total 25ms
    12-08 08:47:28.840 7165-14689/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 5054K, 50% free 18514K/36504K, paused 12ms, total 12ms
    12-08 08:47:29.808 7165-8839/com.sankuai.erp.cashier.debug V/PTR: 本地有打印机,但可用打印机列表为空,不进行轮询
    12-08 08:47:31.396 7165-14689/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 5105K, 50% free 18523K/36504K, paused 10ms, total 10ms
    12-08 08:47:35.948 7165-14684/com.sankuai.erp.cashier.debug D/uploadspeed: 10234.80432972523
    12-08 08:47:35.980 7165-7165/com.sankuai.erp.cashier.debug W/EGL_genymotion: eglSurfaceAttrib not implemented
    12-08 08:47:37.816 7165-8839/com.sankuai.erp.cashier.debug V/PTR: 本地有打印机,但可用打印机列表为空,不进行轮询
    12-08 08:47:42.792 7165-8822/com.sankuai.erp.cashier.debug D/dalvikvm: GC_FOR_ALLOC freed 6278K, 53% free 17497K/36504K, paused 12ms, total 12ms

    GC+DumpJavaHeap 自动分析泄漏点 Histogram搜索泄漏引用链条 执行无限次的属性动画未关闭 在Fragment的onHide方法中反注册,但是onHide未被系统调用 MAT分析工具 DominatorTree展示对象内存排行
    Dominator Tree: List the biggest objects and what they keep alive.  大Object列表,用于定位OOM。比如全家桶中Okhttp的  Cache。
    
    对象耗用内存排行.png 问题 被静态引用 泄漏位置 Handler发送延迟执行messager导致内存泄漏 泄漏位置 待排查

    内存泄漏

    OOM

    Class Name                                      | Shallow Heap | Retained         
    Heap | Percentage
     ------------------------------------------------------------------------------------
    okhttp3.internal.cache.DiskLruCache @ 0x12f50340|   88 |    56,704,448 |     81.34%
     ------------------------------------------------------------------------------------
    

    内存耗用不一定存在内存泄漏,这是两个问题。

    屏幕快照 2017-12-08 下午12.29.35.png 屏幕快照 2017-12-08 下午12.57.48.png 屏幕快照 2017-12-08 下午12.59.49.png

    相关文章

      网友评论

          本文标题:内存泄漏汇总

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