GC の対象になるオブジェクトの数
次のコードの (A) の時点で、ガベージコレクションの対象になる Box オブジェクトはいくつか。
Box a = new Box();
Box b = new Box();
Box c = a;
a = b;
c = null;
// (A)- A 1つ
- B 0
- C 2つ
- D 3つ
正解と解説を見る
正解: A
- A: 1つ目の Box は a が付け替えられ、c も null になり、どこからも参照されなくなります。
- B: 1つ目の Box を指していた a と c が、どちらもそれを指さなくなっています。
- C: 2つ目の Box は a と b から参照されているので対象外です。
- D: 作った Box は2つだけで、そのうち参照が残っていないのは1つです。
ポイント
- 1つ目の Box は a と c から参照されていましたが、a は2つ目に付け替えられ、c は null になったので、どこからも参照されません。
- 2つ目の Box は a と b から参照されているので対象外です。どこからも参照されなくなったオブジェクト が GC の対象です。
「Java クラスの定義とインスタンス化とオブジェクトのライフサイクル」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)