我对Java中的SoftReference
WeakReference
提出了一个问题。
我所知道的是:
GC使用算法来决定是否回收可轻松访问的对象,但始终回收弱可达对象。
这是否意味着GC永远不会在finalize()
上运行WeakReferences
方法?
由于
答案 0 :(得分:2)
根据The Truth About Garbage Collection
如果一个类定义了一个终结器,那么该类的任何实例都必须 在释放之前调用终结器。这意味着 通过包含终结器来延迟释放。
基于此,我的理解是,无论周/软,如果定义完成,它将被调用。
答案 1 :(得分:0)
我不遵循你的推理,但终结者肯定会被称为。一旦对象变为finalize,就会清除对它的所有soft / weak引用。因此,在最终确定之前,参考可以被视为null
。