• ベストアンサー

-メモリ消費について-

お世話になります。 メモリの消費、及びガベージコレクションについて分からないことがあります。 0 class Child extend Parent{・・・} 1 Parent p = new Parent(); 2 Child c = new Child(); 3 p = c ; 上記のような場合、1行目で確保されたParentのメモリは3行目でChildを参照コピーした時には、どのような状態になるのですか?? メモリの確保、及びに開放、ガベージコレクションについて理解できません。 理解されてる方、助言の方をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.1

3行目の代入によって、 1行目で確保されたParentのインスタンスは、どこからも参照されなくなります。 よって、ガベージコレクションの対象になるはずです。 2行目終了時点******************** p→{Parentのインスタンス} c→{Childのインスタンス} 3行目終了時点********************   {Parentのインスタンス} (どこからも参照されない) c→{Childのインスタンス}←p あくまで「対象」になるだけであって、3行目の処理が行われたあと、 すぐさまメモリが開放されるわけではありません。 どこかのタイミングでガベージコレクションが行われた際に開放されます。 いつ開放されるかは決められていません。

noname#30420
質問者

お礼

ピンと効ました、ありがとう御座います。

関連するQ&A