前言:
finalize是Java中的一个方法,它是Object类中的一个方法,因此所有的Java类都可以继承它。finalize方法在垃圾回收器回收对象之前被调用,用于释放对象占用的资源。 当一个对象不再被引用时,垃圾回收器会在某个时刻自动回收它。在回收之前,垃圾回收器会调用finalize方法,让对象有机会释放它所占用的资源。如果一个对象没有实现finalize方法,或者finalize方法没有正确地释放资源,那么这些资源就会一直被占用,直到程序结束。
图:
代码样例:
package mystudy.myfinalize;
public class myfinalize {
public static void main(String[] args) {
a bmw =new a("bao");
/*这时 a对象就是一个垃圾,垃圾回收器就会回收(销毁)对象
销毁前会调用该对象的finalize方法,我们可以在finalize中,
写自己的业务逻辑代码(比如:数据库连接,或打开文件
*/
bmw=null;
System.gc();//主动调用垃圾回收器
System.out.println("程序输出");
}
}
class a
{
private String name;
public a(String name) {
this.name = name;
}
//重写finalize
@Override
protected void finalize() throws Throwable {
System.out.println("我们销毁汽车"+name);
System.out.println("释放了资源");
}
}
输出:(只有主动调用System.gc才显示重写的finalize)