我有一个关于Java 中SoftReference
s的问题。WeakReference
我所知道的是:
GC 使用算法来决定是否回收一个软可达对象,但总是回收一个弱可达对象。
这是否意味着 GC 永远不会在finalize()
上运行该方法WeakReferences
?
谢谢
我有一个关于Java 中SoftReference
s的问题。WeakReference
我所知道的是:
GC 使用算法来决定是否回收一个软可达对象,但总是回收一个弱可达对象。
这是否意味着 GC 永远不会在finalize()
上运行该方法WeakReferences
?
谢谢
根据垃圾收集的真相
如果一个类定义了一个终结器,那么该类的任何实例都必须在释放之前调用终结器。这意味着释放会因包含终结器而延迟。
基于此,我的理解是,无论周/软,如果定义了 finalize,它将被调用。
我不遵循您的推理,但肯定总是调用终结器。一旦一个对象变成可终结的,所有对它的软/弱引用都将被清除。因此,可以像null
在最终确定之前一样观察到 refs。