今天早上看Thinking in java的【第四章 初始化和清除】.【 清除:终结和垃圾回收】的时候, 看到了这个东西。
用于清理滴。。。
当然,这个方法来自java.lang.Object
finalize()方法的重写
权限(Access)需要是protected或者是public ,不能是private
finalize()方法不需要显示地调用, 在垃圾回收(GC)时会被自动先行调用的。
据我测试,需要显示地调用垃圾回收方法(System.gc()),并且需要有new出来的尚未被销毁的匿名对象的存在(调用其它语言暂不作考虑),finalizze()方法才会被调用
Eg:
public class F {
public static void main(String args[]) {
new F();
//int a[] = new int[3];
//F f= new F();
System.gc();
}
public void finalize() throws Throwable{
//super.finalize();
System.out.println("finalize method was called!");
}
}
上面的代码中,分别new出了一个匿名对象, 一个整型数组和一个实例对象f,从测试结果看来,只有在创建匿名对象并且显示地调用了 System.gc()方法的时候,finalize方法才被调用了。