如何在Java中做弱引用?
How to make weak references in Java?
让我解释一下:
你有一个对象 a 持有对对象 b 的引用。
你知道 如果只有 a 持有对 b 的引用,那么 b 不再需要 ,并且 应该被收集GC.
现在想象一下,a 总是可以访问的。
gc实现可以通过a访问b。
因此,GC 永远不会收集 b!
如果只有 a 有一个引用,我如何让 GC 收集 b?
有没有办法让一个被GC忽略的引用(弱引用),这样当满足上述条件时,gc收集 b,留下指向 a?
的空指针
您在问题中使用了标签 "weak-references",这就是答案。 Java 有一个 WeakReference
class 用于执行此操作,保存对仍然可以被垃圾收集的对象的引用。如果您拥有 WeakReference
的对象被收集,则 WeakReference
returns null.
让我解释一下: 你有一个对象 a 持有对对象 b 的引用。 你知道 如果只有 a 持有对 b 的引用,那么 b 不再需要 ,并且 应该被收集GC.
现在想象一下,a 总是可以访问的。
gc实现可以通过a访问b。
因此,GC 永远不会收集 b!
如果只有 a 有一个引用,我如何让 GC 收集 b?
有没有办法让一个被GC忽略的引用(弱引用),这样当满足上述条件时,gc收集 b,留下指向 a?
的空指针您在问题中使用了标签 "weak-references",这就是答案。 Java 有一个 WeakReference
class 用于执行此操作,保存对仍然可以被垃圾收集的对象的引用。如果您拥有 WeakReference
的对象被收集,则 WeakReference
returns null.