-
检查内存泄漏原理
当构造一个弱引用对象(KeyedWeakReference
)时,并把ReferenceQueue
引用队列作为参数传入。当系统发生GC时,如果对象被正确回收,那么ReferenceQueue
中不为null,即没有发生内存泄漏。如果ReferenceQueue
中为null,则发生了内存泄漏。 -
一个对象的引用方式可以分为四种:
强引用(StrongReference):JVM 宁可抛出 OOM 也不会让 GC 回收具有强引用的对象
软引用(SoftReference):如果一个对象只具有软引用,那么在内存空间不足时就会回收该对象
弱引用(WeakReference):如果一个对象只具有弱引用,那么在 GC 时不管当前内存空间是否足够,都会回收该对象
虚引用(PhantomReference):任何时候都可以被 GC 回收,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否存在该对象的虚引用,来了解这个对象是否将要被回收
参考资料:
https://juejin.cn/post/6884225131015569421
https://juejin.cn/post/6884526739646185479
网友评论