2

我有一个关于Java 中SoftReferences的问题。WeakReference

我所知道的是:

GC 使用算法来决定是否回收一个软可达对象,但总是回收一个弱可达对象。

这是否意味着 GC 永远不会在finalize()上运行该方法WeakReferences

谢谢

4

2 回答 2

2

根据垃圾收集的真相

如果一个类定义了一个终结器,那么该类的任何实例都必须在释放之前调用终结器。这意味着释放会因包含终结器而延迟。

基于此,我的理解是,无论周/软,如果定义了 finalize,它将被调用。

于 2012-08-30T15:58:28.460 回答
0

我不遵循您的推理,但肯定总是调用终结器。一旦一个对象变成可终结的,所有对它的软/弱引用都将被清除。因此,可以像null 最终确定之前一样观察到 refs。

于 2012-08-30T16:02:40.853 回答