2007年10月15日月曜日

ガーベージコレクション

Java のガーベージコレクションは
  • どこからも参照されないオブジェクト
  • 到達不能のオブジェクト

を自動で削除します。


<オブジェクトに null を代入>オブジェクト参照変数に null を代入するとそのオブジェクト参照変数はもはやどこも参照していないので削除対象になります。

<参照先の変更>
参照先を変更すると、元の参照先は削除対象になります。

Integer a = new Integer(1);
Integer b = new Integer(2);
a = b;

この時点で new Integer(1) というインスタンスはどこからも参照されなくなり削除対象となります。

<参照の孤立>
A⇔B
A = null
B = null

A と B の相互参照が孤立しガーベージコレクトの対象になる。

<ガーベージコレクションは即座に実行できるか?>
答えは No です。
カーベージコレクトを要求することはできます。
実行のタイミングは JVM が決定します。


<カーベージコレクションの要求>
・ System.gc();
・ Runtime.getRuntime().gc();

<finalize メソッド>
finalize メソッドはオブジェクトがガーベージコレクションによって削除される直前に呼び出されます。
finalize メソッドはオブジェクトに対し一度だけ呼び出される。
finailze メソッドに重要な処理を記述することは推奨されません。

0 件のコメント: