Java メモリ管理について覚えておくべき最も重要なことは、参照を「無効にする」ことです。
参照されていないオブジェクトのみがガベージ コレクションの対象になります。
たとえば、次のコードのオブジェクトは収集されず、何もしないだけでメモリがいっぱいになります。
List objs = new ArrayList();
for (int i = 0; i < Integer.MAX_VALUE; i++) objs.add(new Object());
しかし、それらのオブジェクトを参照しない場合は、メモリの問題なしに好きなだけループできます。
List objs = new ArrayList();
for (int i = 0; i < Integer.MAX_VALUE; i++) new Object();
したがって、何をするにしても、オブジェクトへの参照を削除して、使用されなくなったことを確認してください(コレクションへの参照を設定するnull
か、コレクションをクリアしてください)。
ガベージ コレクタがいつ実行されるかは、JVM に決定を委ねるのが最善です。プログラムが大量のメモリを使用し、速度が重要な処理を開始しようとしている場合を除いて、ガベージ収集された余分なメモリが処理される可能性があるため、JVM に GC を実行するように提案することができます。そうでなければ、私は個人的に実行する理由がないと思いますSystem.gc()
.
お役に立てれば。