[英]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.