Java提供了一种在对象即将被销毁时执行资源释放的方法。在Java中创建对象,但是不能销毁对象。JVM运行一个称为垃圾收集器的低优先级特殊任务来销毁不再引用的所有对象。
垃圾回收器给我们一个机会,在对象被销毁之前执行清理代码。Object
类有一个finalize()
方法就是用于在对象被销毁之前执行清理代码,声明如下:
protected void finalize() throws Throwable { }
Object
类中的finalize()
方法不会做任何事情。所以需要覆盖类中的finalize()
方法。类的finalize()
方法将在类的对象销毁之前由垃圾回收器调用。
示例
以下代码显示了如何创建一个Finalize
类覆盖对象类的finalize()
方法。
class Finalize {
private int x
public Finalize(int x) {
this.x = x
}
public void finalize() {
System.out.println("Finalizing " + this.x)
}
}
public class Main {
public static void main(String[] args) {
for (int i = 0 i < 20 i++) {
Finalize f= new Finalize(i)
f.finalize()// 可显示的调用
}
}
}
上面的代码生成以下结果。
Finalizing 0
Finalizing 1
Finalizing 2
Finalizing 3
Finalizing 4
Finalizing 5
Finalizing 6
Finalizing 7
Finalizing 8
Finalizing 9
Finalizing 10
Finalizing 11
Finalizing 12
Finalizing 13
Finalizing 14
Finalizing 15
Finalizing 16
Finalizing 17
Finalizing 18
Finalizing 19