这个问题是关于理解WeakReference的Java文档
当我读到Java的WeakReference时,我在文档中遇到了这句话:
假设垃圾收集器确定某个点 一个对象弱可达的时间。那时它会 原子地清除对该对象的所有弱引用以及所有弱对象 引用任何其他弱可达对象 可以通过一系列强大和柔和的引用来访问对象
但这对我没有意义。假设我有一个引用对象A的WeakReference wrA和引用对象B的另一个WeakReference wrB.B强烈引用A(直接或间接通过链)。现在根据该文档,如果A变得弱可达,并且如果B在那时已经弱可达,那么wrB将与wrA一起被清除。但是,由于此时B已经微弱可达,所以在早期首次检测到B的弱可达性时,是否已经清除了wrB?
答案 0 :(得分:0)
由于此时B已经微弱可达,所以在早期首次检测到B的弱可达性时,是否已经清除了wrB?
这种情况同时发生,因此没有更早的时间。当GC启动时,当时不能很容易到达的所有对象(例如A和B)都有资格在那时清理。