ちなみに、ちょっと前に登場した話ですが Stringオブジェクト は破棄されません。


public class Example {
  static int i = 0 ;

  public static void main(String[] args) {
    //Example exa = new Example() ;
    String exa = new String("おはよう");
    exa = null ;

    System.gc();

    System.out.println(String.valueOf(i)) ;
  }

  protected void finalize() {
    i = 99 ;
    System.out.println("exaオブジェクトは破棄されます");
  }
}