Java 重写finalize(),引用其中的对象

Java 重写finalize(),引用其中的对象,java,Java,如果重写finalize()并引用一个对象,会发生什么。那个对象会被垃圾收集吗?从内存中清除该对象的另一种方法是什么 Finalize()被设计为由垃圾收集器调用以删除取消引用的对象,如果在调用Finalize()之前重新引用了一个对象,那么您可以简单地防止GC破坏它,因为它现在又有引用了,这是安全的,即假定它在取消引用期间没有被获取,这可能会导致问题。来自: finalize方法可以执行任何操作,包括使此对象再次可供其他线程使用 然而: 对于任何给定对象,Java虚拟机都不会多次调用final

如果重写finalize()并引用一个对象,会发生什么。那个对象会被垃圾收集吗?从内存中清除该对象的另一种方法是什么

Finalize()被设计为由垃圾收集器调用以删除取消引用的对象,如果在调用Finalize()之前重新引用了一个对象,那么您可以简单地防止GC破坏它,因为它现在又有引用了,这是安全的,即假定它在取消引用期间没有被获取,这可能会导致问题。

来自:

finalize方法可以执行任何操作,包括使此对象再次可供其他线程使用

然而:

对于任何给定对象,Java虚拟机都不会多次调用finalize方法


记住,finalize只被JVM调用一次,因此子序列GCs将只运行一次,而不给再次分配引用、保存对象等机会。可能会导致内存泄漏。

不要这样做。可能会造成内存泄漏。你想解决什么问题?请检查这个。你想达到什么目的?