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)