zoukankan      html  css  js  c++  java
  • java垃圾回收之对象生存or死亡

    /**
     * 此代码演示了亮点
     * 1.对象可以被GC时自我拯救
     * 2.这种自救的机会只有一次,因为一个对象的finalize()方法最多只会被系统自动调用一次
     *
     */
    public class FinalizeEscapeGC {
     
     public static FinalizeEscapeGC SAVE_HOOK = null;
     
     public void isAlive(){
      System.out.println("yes,i am still alive");
     }
     
     @Override
     protected void finalize() throws Throwable{
      super.finalize();
      System.out.println("finalize method executed!");
      FinalizeEscapeGC.SAVE_HOOK = this;
     }
     /**
      * @param args
      * @throws InterruptedException
      */
     public static void main(String[] args) throws InterruptedException {
      SAVE_HOOK = new FinalizeEscapeGC();
      
      //对象第一次成功拯救自己
      SAVE_HOOK = null;
      System.gc();
      //因为Finalizer方法优先级很低,暂停0.5秒,以等待他
      Thread.sleep(1000);
      if(SAVE_HOOK!=null){
       SAVE_HOOK.isAlive();
      }else{
       System.out.println("no,i am dead");
      }
      
      SAVE_HOOK = null;
      System.gc();
      //因为Finalizer方法优先级很低,暂停0.5秒,以等待他
      Thread.sleep(1000);
      if(SAVE_HOOK!=null){
       SAVE_HOOK.isAlive();
      }else{
       System.out.println("no,i am dead");
      }
     }
    }

  • 相关阅读:
    相关分析[SDOI2017]
    排序[HEOI2016/TJOI2016]
    逆序对[AHOI2008]
    逆序对数列[HAOI2009]
    小Z的袜子「2009国家集训队」
    http抓包—Content-Type讲解
    mysql——leetcode问题记录
    linux--vi命令
    Linux—echo命令
    Linux—文件命令之touch命令
  • 原文地址:https://www.cnblogs.com/jggz/p/3013415.html
Copyright © 2011-2022 走看看