finalize()是java.lang.Object类中的9个方法之一。该函数的api文档如下:
当垃圾回收确定没有更多引用对象时,由垃圾回收器在对象上调用。
- 但是finalize()方法实际上是做什么的?
- 如果我们手动调用finalize()方法会发生什么?
默认情况下它不会执行任何操作,但是如果您想执行某些操作,它提供了拦截点。
这是java.lang.Object
中finalize()
的实现。
protected void finalize() throws Throwable { }
参见
我认为有一个规则:永远不要在正常情况下使用它。只有在教育目的和调试目的下,才是可接受的。
默认情况下,它什么也不做。你可以重写它,以便找出你的垃圾回收器是否正在清理对象。但是,永远不要将清理逻辑放入该方法中。因此,如果你遇到内存问题,检查特定对象是否释放了内存可能会有用。
finalize
使一个对象复活,但一个复活自己的对象通常无法知道它所持有引用的任何对象是否会在将来某个不确定的时间运行它们的finalize
方法。 - supercat