LeakCanary
是一个简单方便的内存泄漏检测框架,做 android 的同学基本都收到过 LeakCanary 检测出来的内存泄漏。目前 LeakCanary 最新版本为 2.7 版本,并且采用 kotlin 重写了一遍。最近也是对 kotlin 有了一些了解后,才敢来分析 LeakCanary 的实现原理。
1. 准备知识
1.1 Reference
Java中的四种引用类型,我们先简单复习下
强引用,对象有强引用时不能被回收
软引用 SoftReference,对象只有软引用时,在内存不足时触发GC会回收该对象
弱引用 WeakReference,对象只有弱引用时,下次GC就会回收该对象
虚引用 PhantomReference,平常很少会用到,源码注释主要用来监听对象清理前的动作,比Java finalization更灵活,PhantomReference 需要与 ReferenceQueue 一起配合使用。
12-11 19:07