这个问题是关于理解WeakReference的Java文档
当我读到Java的WeakReference时,我在文档中看到了这样一句话:
假设垃圾回收器在 对象微弱可到达的时间。到时候它会 原子清除对该对象的所有弱引用和所有弱引用 对任何其他弱可访问对象的引用,从中可以 对象可通过一系列强引用和软引用进行访问
但这对我来说没有意义。假设我有一个引用对象 A 的弱引用 wrA,另一个引用对象 B 的弱引用 wrB。而B强烈地指A(直接或间接通过链(。现在根据文档,如果 A 变得弱可访问,并且如果 B 此时已经弱可访问,则 wrB 将与 wrA 一起清除。但是,既然当时 B 已经是弱可访问性,那么 wrB 不应该在第一次检测到 B 的弱可访问性时就已经清除了吗?
既然当时B已经是弱可达性的,那么wrB不应该在第一次检测到B的弱可达性时就已经清除了吗?
这同时发生,因此没有更早的时间。 当 GC 启动时,当时无法强烈访问的所有对象(例如 A 和 B(都有资格在那时进行清理。