此代码应清除它:
public class TestInvisibleObject{ public static class PrintWhenFinalized{ private String s; public PrintWhenFinalized(String s){ System.out.println("Constructing from "+s); this.s = s; } protected void finalize() throws Throwable { System.out.println("Finalizing from "+s); } } public static void main(String[] args) { try { PrintWhenFinalized foo = new PrintWhenFinalized("main"); } catch (Exception e) { // whatever } while (true) { // Provoke garbage-collection by allocating lots of memory byte[] o = new byte[1024]; } }}在我的机器(jdk1.6.0_05)上打印:
从主体构造
从主要完成
因此看来问题已得到解决。
请注意,使用System.gc()代替循环不会由于某种原因而导致对象被收集。



