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");
      }
     }
    }

  • 相关阅读:
    oracle索引
    linux命令
    struts2的配置文件struts.xml详解
    oracle删除一个表中的重复数据,且只保留一条
    初步研究java类的加载机制
    java读取Properties配置文件
    利用oracle闪回来找回被drop的表
    快速排序Quicksort
    树与树的概念
    递归
  • 原文地址:https://www.cnblogs.com/jggz/p/3013415.html
Copyright © 2011-2022 走看看