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)