【发布时间】:2014-12-13 20:01:28
【问题描述】:
这个问题是关于理解 WeakReference 的 Java 文档
当我阅读 Java 的 WeakReference 时,我在文档中看到了这句话:
假设垃圾收集器在某个时间点确定 对象弱可达的时间。到时候就会 原子地清除对该对象的所有弱引用和所有弱引用 对任何其他弱可达对象的引用 对象可通过一系列强引用和软引用访问
但这对我来说没有意义。假设我有一个引用对象 A 的 WeakReference wrA 和另一个引用对象 B 的 WeakReference wrB。并且 B 强烈引用 A(直接或间接通过链)。现在根据文档,如果A变得弱可达,而B此时已经弱可达,那么wrB将与wrA一起被清除。但是,既然此时B已经是弱可达的,那wrB不应该在第一次检测到B的弱可达的时候就已经清零了吗?
【问题讨论】:
-
因为那时 B 已经很弱可达 -- 这个事实可能直到现在都没有被发现,不是吗?
-
重新措辞可能是个好主意,因为似乎很难弄清楚问题到底出在哪里。
标签: java weak-references