java - 定义 : Unfinalized versus finalizable object

标签 java garbage-collection specifications finalize finalization

为了理解 Java 中的弱引用,我不得不查阅 Java 语言规范。以下部分来自第 12.6 节,令我感到困惑:

An unfinalized object has never had its finalizer automatically invoked; a finalized object has had its finalizer automatically invoked. A finalizable object has never had its finalizer automatically invoked, but the Java virtual machine may eventually automatically invoke its finalizer.

那么未终结对象和可终结对象之间的形式区别是什么?从引述看来,如果未终结和可终结是不同的,那么对于未终结的对象,JVM 最终可能会调用其终结器的情况肯定是真的。有点困惑,或者我还有一些英语语义需要研究;)

链接到 Java 规范中的部分:Implementing Finalization

最佳答案

答案似乎就在这一行:

If the Java virtual machine detects that an unfinalized object has become finalizer-reachable or unreachable, it may label the object finalizable (G, H);

未终结的对象还没有资格被终结。他们是可达的。可终结对象有资格被终结,所以 JVM 可以在它选择时这样做。换句话说,“可能”的意思是“允许”,而不仅仅是“它可能发生”的意思。

关于java - 定义 : Unfinalized versus finalizable object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360742/

相关文章:

java - 为什么对类的静态访问必须用类名限定

java - 有条件地停止显示 org.eclipse.ui.newWizard

c# - 多维数组枚举器是否保证所有实现的顺序相同?

java - 嵌套 Java HashMap 的动态变量键

java - 为什么以下对象不符合垃圾回收条件?

python - 引用计数降为零后多久调用 `__del__`?

Android:跟踪创建的对象数

browser - 如何在 HTTP 中对 Content-Disposition header 的文件名参数进行编码?

java - 可以假设 Java Concurrent Mark Sweep Garbage Collector 在 Linux 和 Mac 以及 Windows 上同样出色吗?

java - Fragment 中的 ListView 和 Tabwidget