繁体   English   中英

澄清Object类中的finalize()方法

[英]Clarification on finalize() method in Object class

如果有人能够在Object类的finalize()方法的javadoc中正确地澄清2点,那将会很有帮助:

1. It is guaranteed, however, that the thread that invokes finalize will not be holding any user-visible synchronization locks when finalize is invoked.

“用户可见”同步的意义是什么? 除了“用户可见”之外还有其他同步吗?

2. The finalize method is never invoked more than once by a Java virtual machine for any given object.

在这种情况下,JVM必须维护所创建的每个对象的唯一标识,以及调用其finalize方法的信息。 它最终是否会超越存储的任何区域?

“用户可见”同步的意义是什么?

锁定您可以从Java代码中获取。

除了“用户可见”之外还有其他同步吗?

是的,JVM内部有锁供它使用。

JVM必须维护所创建的每个对象的唯一标识,以及调用其finalize方法的信息。

对象是否已完成存储在标题中。 对象没有全局ID。 它唯一独特的是对象本身的引用。

它最终是否会超越存储的任何区域?

在创建对象时分配此空间。

有关更多信息,请参阅Java中的对象复活

我想(!)第二点是通过在调用finalize()删除该对象来实现的。 这样就不需要存储了。

“用户可见”同步的意义是什么? 除了“用户可见”之外还有其他同步吗?

我认为“用户可见的同步”是任何锁定或同步代码,可以通过分析源编译器看到的代码找到。 JVM实际上可能在内部使用许多其他锁和同步原语,这对开发人员来说不一定是一个问题。

JVM必须维护所创建的每个对象的唯一标识,以及调用其finalize方法的信息。 它最终是否会超越存储的任何区域?

不 - 这是因为一旦JVM调用finalize() - 最终该对象将被gc'd。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM