Java的finalize方法和gc方法,调用实例。
public class FinalizeTest{
private static FinalizeTest ft = null;
public void info()
{
System.out.println("测试系统finalize方法");
}
public static void main(String args[]){
new FinalizeTest();
System.gc(); //1
//Runtime.getRuntime().runFinalization(); //2
//System.runFinalization(); //3
ft.info();
}
public void finalize(){
//让ft引用到试图回收的可恢复对象,即可恢复对象重新变为可达到
ft = this;
}
}
/**如果直接调用runFinalization的两个方法,finalize不一定会运行,this就
拿不到了。这时再info()不会输出,反而会有空指针异常。
注释掉1、保留2或3,一种输出;
注释掉2或3,保留1,另一种输出。
*/
空指针异常是:
Exception in thread "main" java.lang.NullPointerException
at FinalizeTest.main(FinalizeTest.java:12)