finalize 的使用-转

public class FinalizationDemo { 
    public static void main(String[] args) { 
        Cake c1 = new Cake(1); 
        Cake c2 = new Cake(2); 
        Cake c3 = new Cake(3); 
         
        c2 = c3 = null; 
   //     System.gc(); //Invoke the Java garbage collector 
        Runtime.getRuntime().gc();
    } 

 
class Cake extends Object { 
    private int id; 
    public Cake(int id) { 
        this.id = id; 
        System.out.println("Cake Object " + id + "is created"); 
    } 
     
    protected void finalize() throws java.lang.Throwable { 
        super.finalize(); 
        System.out.println("Cake Object " + id + "is disposed"); 
    } 

结果:
Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed

Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。

System.gc()和Runtime.gc() 提示jvm进行回收,具体回收时间还是要看jvm

java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,两者的行为没有任何不同。只是前者写的要简单点
转自:http://blog.csdn.net/carolzhang8406/article/details/6705831

猜你喜欢

转载自cuityang.iteye.com/blog/2387034