内存泄漏汇总

2017-12-07  本文已影响141人  SMSM

优化内存从以下几点搞起

  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
上一篇下一篇

猜你喜欢

热点阅读