这个问题是关于理解Java文档中WeakReference的问题
当我读到Java的WeakReference时,我在文档中看到了这样一句话:
假设垃圾收集器在某个时刻确定
对象弱可达的时间。到时候就会
原子地清除对该对象的所有弱引用以及所有弱引用
对任何其他弱可达对象的引用
对象可以通过强引用和软引用链访问
但这对我来说没有意义。假设我有一个 WeakReference wrA 引用对象 A,另一个 WeakReference wrB 引用对象 B。并且 B 强引用 A(直接或通过链间接)。现在根据文档,如果A变得弱可达,并且如果当时B已经弱可达,那么wrB将与wrA一起被清除。但是,由于此时B已经弱可达,那么wrB不应该在第一次检测到B的弱可达性的时候就已经被清除了吗?
既然此时B已经弱可达,那么wrB不应该在第一次检测到B的弱可达性时就已经被清除了吗?
这是同时发生的,所以没有更早的时间。当 GC 启动时,所有当时不强可达的对象(例如 A 和 B)都有资格被清理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)