finalize方法

作者: 哈迪斯Java | 来源:发表于2021-11-03 11:07 被阅读0次

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

    相关文章

      网友评论

        本文标题:finalize方法

        本文链接:https://www.haomeiwen.com/subject/ukiqzltx.html