我从以下链接中获得红色:garbage collection from geeksforgeeks 这里据说:
The finalize() method is never invoked more than once for any given object.
所以,这里说“不止一次”,我想知道是否有可能 finalize() 方法未被调用并且垃圾收集器销毁了该方法对象。
可能吗?
最佳答案
当 GC 发现一个对象的类 finalize()
已被重写时,它会被添加到对象队列中,以便对其调用 Finalize()。只有在对象被终结一次之后,GC 才能将其清理。即这将在稍后的 GC 上进行。
例如如果一个对象位于tenured空间中,则可能会在执行完全收集之前找到它,并且只有在调用finalize方法后才会在完全GC上清理它。
有关更多详细信息,请参阅 Object.finalize()
的 Java 11 Javadoc
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()
so is there any possibility that garbage collector fully destroyed the object in heap but didn't call the finalize() method on that object?
当对象位于终结队列中时,无法将其删除。
And you all assumed that there is not certainity in the destroying of object by the garbage collector.
只要仍然存在对它的强引用,它就不会被销毁。
关于java - 在销毁 'finalize()' 对象之前,垃圾收集器是否总是调用 'Unreachable' 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629274/