某氏向けのちょっとした実験
class A { private int i; public A(int i) { this.i = i; } protected void finalize() { System.out.println("finalize![" + this.i + "]"); } public static void main(String[] args) { new A(0); System.gc(); System.out.println("GC!"); new A(1); } }
finalize![0] GC!
要するにSystem.exit(int)すると、GCが省略されるのでfinalize()が呼ばれないのではないかと。
いや、仕様書読んでないから予測でしかないわけですが。