关于LeakCanary的出身和作用这里就不多说了,也不是本文的重点。这些入门知识可以参考如下博客LeakCanary中文使用说明。
LeakCanary检测内存泄漏(主要Activity内存泄漏)主要分为3个部分:
- 监听
监听对象(Activity)的生命周期,并在对应回调接口(onDestroy)中做检测。 - 检测
在监听中的回调接口(一般是一个对象本应该被销毁的地方)里面检测对象是否已经被释放。 - 分析
当检测到内存泄漏时,便使用Square的另一个开源库haha来对dump出来的hprof文件做分析,得到泄漏对象在堆栈中的引用链,并以通知的形式发送给开发者。
下面我们就按照上面的三个部分来一步一步从源码角度来进行分析。