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

来源:互联网 发布:gymnopedie no.1 知乎 编辑:程序博客网 时间:2024/05/20 01:09

finalize       

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


[java] view plain copy
  1. /** 
  2.  * finalize 只会被执行一次 
  3.  *  
  4.  */  
  5. public class testFinalize {  
  6.   
  7.     private static testFinalize demo = null;  
  8.       
  9.     public static void main(String[] args) throws InterruptedException {  
  10.         demo = new testFinalize();  
  11.         demo = null;  
  12.         System.gc();  
  13.         Thread.sleep(500);  
  14.         if(demo != null){  
  15.             System.out.println("I am live" );  
  16.         }else{  
  17.             System.out.println("I am die" );  
  18.         }  
  19.           
  20.         demo = null;  
  21.         System.gc();  
  22.         if(demo != null){  
  23.             System.out.println("I am live" );  
  24.         }else{  
  25.             System.out.println("I am die" );  
  26.         }  
  27.     }  
  28.       
  29.     @Override  
  30.     protected void finalize() throws Throwable {  
  31.         super.finalize();  
  32.         System.out.println("This execute finalize method");  
  33.         demo = this;  
  34.     }  
  35. }  

运行结果:

This execute finalize method
I am live
I am die

阅读全文
0 0
原创粉丝点击