garbage collection

"ガーベジコレクション"というのか"ガベージコレクション"なのかよく分からないが。

garbage collectionとは?

直訳した意味そのままで、"ゴミ収集"のこと。
どこからも参照されなくなった配列などはメモリ領域を占有し、リソースの無駄である。そのような領域を集めて、メモリ領域を増やそうってこと。

GarbageTest.java

  1 class GarbageTest {
  2   void method(){
  3     System.out.println("Hello World\n");
  4   }
  5 }
  6 
  7 class GarbageCollection {
  8   public static void main(String[] args){
  9     GarbageTest gt = new GarbageTest();
 10     gt.method();
 11     gt = null;
 12     gt.method();
 13   }
 14 }

実行してみる

$ javac GarbageCollection.java
$ java GarbageCollection
Hello World

Exception in thread "main" java.lang.NullPointerException
	at GarbageCollection.main(GarbageCollection.java:12)

9行目でインスタンスを作成し、参照型変数gtがそのインスタンスを参照しています。
10行目でインスタンスのメソッドmethodを呼び出しています。
このプログラムはテスト用ですから、単純です。でも、大規模なプログラムになると少しでも効率良く書いてリソースを最大限に生かす必要があります。そのような観点から考えて、参照型変数gtが参照しているインスタンスをこれ以上使う必要がないとすると、そのまま参照したままにするのは記憶域の無駄です。
そのため、11行目のようにgtにnullを代入し、gtが何も参照していないことを示します。
そして、誰からも参照されることのなくなったインスタンスはgarbagecollectionに回収されリサイクルされます。
12行目でインスタンスのmethodを参照するとエラーが出ます。gtが何も参照しなくなっているからです。

参照
Javaのガベージ・コレクションを知る (1/2):Javaパフォーマンスチューニング(2) - @IT
ガベージコレクション(GC)とは - IT用語辞典 e-Words
http://www.site-cooler.com/java/j2se/memory.htm
http://members2.jcom.home.ne.jp/take_1118/java61.html
ガベージコレクタの仕組みを理解する (1/2):チューニングのためのJava VM講座(後編) - @IT
http://www.blogot.com/got/2004/04/post_2.html