线上内存监控方案

240 阅读1分钟

常规方式

常规实现一

设定场景线上Dump:Debug.dumpHprofData()

常规实现流程

137107320.png

总结

Dump文件太大,和对象数正相关,可裁剪

上传失败率高、分析困难

配合一定策略,有一定效果

常规实现二

LeakCanary带到线上

预设泄露怀疑点

发现泄露回传

总结

不适合所有情况,必须预设怀疑点

分析比较耗时、也容易OOM

LeakCanary定制

LeakCanary原理

监控生命周期,onDestroy添加RefWatcher检测

二次确认断定发生内存泄露

分析泄露,找引用链

监控组件+分析组件

LeakCanary定制

预设怀疑点-->自动找怀疑点

分析泄露链路慢-->分析Retain size大的对象

分析OOM-->对象裁剪,不全部加载到内存

线上监控完整方案

待机内存、重点模块内存、OOM率

整体及重点模块GC次数、GC时间

增强的LeakCanary自动化内存泄露分析