美文网首页Java 核心技术
JVM垃圾回收机制和System.gc

JVM垃圾回收机制和System.gc

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2020-12-12 08:13 被阅读0次

    垃圾回收机制

    a.垃圾回收是由垃圾收集器自动执行
    b.程序员只能通过System.gc方法来建议执行,无法确保是否执行和何时执行。
    c.jvm调优无法提高程序的运行效率,它真正的目的是减少GC回收的次数,让系统更多的时间是去处理用户的请求

    核心思想:堆内存中对象没有任何引用

    finalize方法作用

    finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。
    它是Object类中的,所有子方法均可以覆盖。
    但垃圾回收的时候注意finalize必须是跟着对应的对象。

    //1. 直接用new对象,未复制变量时,则调用System.gc()可能会执行垃圾回收,finalize()内容也可能会执行
    new FinalizeTest2();
    System.gc();
    
    //2. 复制给变量后,就算调用了System.gc(),finalize()内容也肯定不会执行
    FinalizeTest2 fs = new FinalizeTest2();
    System.gc();
    
    // 3.当引用对象置为空的时候,调用System.gc()可能会执行垃圾回收,但加了System.runFinalization();就一定会执行
    FinalizeTest2 fs = new FinalizeTest2();
    fs = null;
    System.gc();
    System.runFinalization();
    
    @Override
    public void finalize(){
        System.out.println("垃圾清理前的操作");
    }
    
    public static void main(String[] args){
        //这里要用new FinalizeTest();要不然finalize无法执行到,因为finalize是属于FinalizeTest类的
        Object obj = new Object();
    //        FinalizeTest obj = new FinalizeTest();
        obj = null;
        System.gc();
    }
    @Override
    public void finalize(){
        System.out.println("垃圾清理前的操作");
    }
    

    相关文章

      网友评论

        本文标题:JVM垃圾回收机制和System.gc

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