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