心灵地图随笔

finalize方法

2021-11-03  本文已影响0人  哈迪斯Java

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
在操作过程中释放一些资源

上一篇下一篇

猜你喜欢

热点阅读