HashMap<Integer, ArrayList<Integer>>
Javaでは、コードのある時点で、巨大なオブジェクトが使用するメモリを解放したいと思います。null
以下のようにそれを指すのに十分ですか?
Map<Integer, ArrayList<Integer>> complexObject = new HashMap<Integer, ArrayList<Integer>>(1000000);
...
complexObject = null;
?
HashMap<Integer, ArrayList<Integer>>
Javaでは、コードのある時点で、巨大なオブジェクトが使用するメモリを解放したいと思います。null
以下のようにそれを指すのに十分ですか?
Map<Integer, ArrayList<Integer>> complexObject = new HashMap<Integer, ArrayList<Integer>>(1000000);
...
complexObject = null;
?
Javaオブジェクトの割り当てを明示的に解除することはできません。ただし、次のことができます。
null
。System.gc()
。これにより、使用されなくなったオブジェクトの割り当てが解除されますが、このメソッドを呼び出すと実際にガベージコレクターが実行される保証はありません。参照をnullに設定すると、ガベージコレクターが次に実行を決定したときに、そのオブジェクトへの参照が実際にどこにも存在しない場合に、ガベージコレクターが使用できるようになります。ただし、GCが実行を決定したときは、確定されていません。
これは、JavaがCと異なる大きなポイントですが、心配する必要はありません。あなたがGCを信頼できる時間の99.9%はあなたの背中を持っています。
この記事を読んだところですが、メモリの解放についても書かれています。確認してください。ヌル化が常に役立つとは限りません。
メモリが解放される保証はありません。GC が実行されて null が取得されるので、できることはそれだけです。