重複の可能性:
オブジェクトがガベージコレクションされないようにする方法は?
Javaでは、オブジェクトが到達不能になるのはいつですか?
インタビューでこんな質問をされました。
オブジェクトがガベージ コレクタに到達できないようにするには、どうすればよいですか?
重複の可能性:
オブジェクトがガベージコレクションされないようにする方法は?
Javaでは、オブジェクトが到達不能になるのはいつですか?
インタビューでこんな質問をされました。
オブジェクトがガベージ コレクタに到達できないようにするには、どうすればよいですか?
GC は、ヒープ内のすべてのオブジェクトを管理します。オブジェクトを常に到達可能にし、GC によって収集されないようにすることはできますが、GC の到達範囲を超えてオブジェクトを作成することはできません。
データを到達不能にする唯一の方法は、ネイティブ メモリのオフ ヒープにするか、ディスクに書き込むか、別のプロセスに渡すことです。
ところで、別のプロセスでプロキシされた分散 RMI オブジェクトでさえ、使用されなくなったときに GC によってクリーンアップできます。
私が知る限り、ガベージコレクターが「到達できない」オブジェクトはありません。ただし、GC はアイテムを指す参照がなくなったアイテムのみを収集します。
したがって、それらを「保護」するには、それらを final (定数) として宣言するか、たとえばメイン操作ループに参照を含めるなどして、常に変数を指す参照があることを確認します。
それ自体への静的参照を含めるようにします (たとえば、シングルトン パターン)。