为了理解 Java 中的弱引用,我不得不查阅 Java 语言规范。来自第 12.6 节的以下部分让我感到困惑:
未终结的对象从未自动调用其终结器;已完成的对象已自动调用其终结器。可终结对象从未自动调用其终结器,但 Java 虚拟机最终可能会自动调用其终结器。
那么 unfinalized 和 finalizable 对象之间的正式区别是什么?从引用看来,如果 unfinalized 和 finalizable 要不同,那么对于一个 unfinalized 对象,JVM 最终可能会调用它的终结器是不正确的。有点混乱,或者我还有一些英语语义要研究;)
链接到 Java 规范中的部分:实现终结