LeakCanary相关

  1. 检查内存泄漏原理
    当构造一个弱引用对象(KeyedWeakReference)时,并把ReferenceQueue引用队列作为参数传入。当系统发生GC时,如果对象被正确回收,那么ReferenceQueue中不为null,即没有发生内存泄漏。如果ReferenceQueue中为null,则发生了内存泄漏。

  2. 一个对象的引用方式可以分为四种:
    强引用(StrongReference):JVM 宁可抛出 OOM 也不会让 GC 回收具有强引用的对象
    软引用(SoftReference):如果一个对象只具有软引用,那么在内存空间不足时就会回收该对象
    弱引用(WeakReference):如果一个对象只具有弱引用,那么在 GC 时不管当前内存空间是否足够,都会回收该对象
    虚引用(PhantomReference):任何时候都可以被 GC 回收,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否存在该对象的虚引用,来了解这个对象是否将要被回收

参考资料:
https://juejin.cn/post/6884225131015569421
https://juejin.cn/post/6884526739646185479

你可能感兴趣的:(LeakCanary相关)