jvm 内存回收finalize如何在垃圾清除前工作原理

来源:互联网 发布:阿里云用支付宝认证 编辑:程序博客网 时间:2024/05/08 06:01

finalize       

定义: finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的


/** * finalize 只会被执行一次 *  */public class testFinalize {    private static testFinalize demo = null;        public static void main(String[] args) throws InterruptedException {        demo = new testFinalize();        demo = null;        System.gc();        Thread.sleep(500);        if(demo != null){            System.out.println("I am live" );        }else{            System.out.println("I am die" );        }                demo = null;        System.gc();        if(demo != null){            System.out.println("I am live" );        }else{            System.out.println("I am die" );        }    }        @Override    protected void finalize() throws Throwable {        super.finalize();        System.out.println("This execute finalize method");        demo = this;    }}

运行结果:

This execute finalize method
I am live
I am die

0 0
原创粉丝点击