如何在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.