- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シングルトン内で使用したオブジェクトのGC)
シングルトン内で使用したオブジェクトのGC
このQ&Aのポイント
- シングルトンインスタンス内で使用したオブジェクトは、hogemethodメソッドの終了時にGC対象となり、そのうちGCされますか?
- hogeMap = null;をすることにより、hogemethodメソッド終了時にGCされるのでしょうか?
- シングルトンのインスタンスが存在し続ける限り、hogeMapのnullセットの有無はGC対象に影響するのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変数の参照するオブジェクトは、使われなくなった時点でGC対象となります。(※) 使われなくなった時点とは即ち、メインスレッド・及びメインスレッドから派生した全てのサブスレッドから参照が無くなったら、という意味です。 hogeMapはローカル変数で、かつより広いスコープの変数に参照を渡しているわけでも無いので、 明示的にhogeMapにnullをセットすればその時点でhogeMapの保持するオブジェクトはGC対象となりますし、 明示的にnullをセットしなくてもhogemethodを抜けた時点でGC対象となります。 シングルトンとかは関係ありません。 従って、「★hogeMap をGC対象にするためにはnull代入は必要なのか?」に対する答えとしては、「必要ではない」となりますね。 ※システムでプールしているオブジェクトなんかはどうなるかわかりませんが・・・
その他の回答 (1)
- 中村 拓男(@tknakamuri)
- ベストアンサー率35% (674/1896)
回答No.2
hogeMap は、hogemethod() のローカル変数なので、 hogeMap の持つ参照を他に渡すコードが無い限り、 メソッドの実行が終わった段階で GC に対象になるはずです。 #しかし、こういうソースが多いですよね。 #ソースの最後にローカル変数の null クリアコードがずらずらあると #なんかぞっとします。