finalize方法
finalize方法
/Finalize_.java
1.当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,
做一些释放资源的操作【演示】
2.什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃
圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。
3.垃圾回收机制的调用,是由系统来决定(即有自己的GC算法),也可以通过
System.gc()主动触发垃圾回收机制,测试:Car [name]
提示:我们在实际开发中,几乎不会运用nalize ,
package HspLearningPoly.poly01.Obj;
public class FinalizeStudy {
public static void main(String[] args) {
Car bwm = new Car("宝马300L");
bwm = null;//置空
//这时。car对象就是一个垃圾,垃圾回收期就会收回(销毁)对象,但是在销毁对象之前,会调用该对象的finaize的方法
//当然程序员在Finalize可以写自己的业务逻辑代码,比如说释放资源:数据库的连接,或者打开文件等等
//如果不重写Finalize,那么就会调用object类的Finalize,也是就说默认处理
//如果程序员重写了Finalize,就可以实现自己的逻辑
//主动调用垃圾回收器
System.gc();//如果不主动调用垃圾回收器,那么重写的部分不会及时输出,这些源自于垃圾回收器的算法
//在销毁垃圾之前,会查看是否重写finalize,如果没有重写,那么走的就是object的finalize
System.out.println("程序退出.....");
}
}
class Car{
private String name;
//创建的一些属性,资源等等,在Finalize重写后可以进行释放资源或者其他操作
public Car(String name) {
this.name = name;
}
//重写finalize
@Override
protected void finalize() throws Throwable {
System.out.println("我们销毁汽车"+name);
System.out.println("在操作过程中释放一些资源");
}
}
输出结果为:
程序退出.....
我们销毁汽车宝马300L
在操作过程中释放一些资源