Android内存分析与监控

1.查看GC日志

2,使用Profiler分析内存

3,使用LeakCanary监控内存泄漏

Android内存分析与监控_第1张图片

LeakCanary名字的由来:Canary是煤矿中金丝雀表达的参考,暗示了矿工将随身携带进入矿井隧道的笼养金丝雀(鸟类)。如果在矿井中收集到一氧化碳等危险气体,这些气体会在杀死矿工之前杀死金丝雀,从而提供警告立即离开隧道。

原理:LeakCanary通过ApplicationContext统一注册监听的方式,通过application.registerActivityLifecycleCallbacks来绑定Activity生命周期的监听,从而监控所有Activity; 在Activity执行onDestroy时,开始检测当前页面是否存在内存泄漏,并分析结果。KeyedWeakReference与ReferenceQueue联合使用,在弱引用关联的对象被回收后,会将引用添加到ReferenceQueue;清空后,可以根据是否继续含有该引用来判定是否被回收;判定回收, 手动GC, 再次判定回收,采用双重判定来确保当前引用是否被回收的状态正确性;如果两次都未回收,则确定为泄漏对象。

LeakCanary的问题:LeakCanary也有一定的不确定性,一般同一个地方反复泄漏5次,算是一个泄漏,同时不建议用在线上环境。

4.线上监控

线上的内存监控一般都是一些大公司在做,例如美团的Probe还有微信最近开源的Matrix,个人觉得这个可以去了解下,大公司用户数多时会用到,小公司App接入必要性不是很大,一般来说把上面的介绍的部分做好了就足够了。

你可能感兴趣的:(Android内存分析与监控)