Java ではガベージ コレクションが自動化されていることは知っています。ただし、System.gc()
コード内で を呼び出すと、その時点で JVM がガベージ コレクションを実行するかどうかを決定する可能性があると理解しています。これは正確にはどのように機能しますか? JVM は、GC を実行する (または実行しない) ことを、どのような基準/パラメーターに基づいて決定するのでしょうかSystem.gc()
?
これをコードに組み込むのがよい例はありますか?
ベストアンサー1
実際には、いつものガベージ コレクションを実行するかどうかを決定します。その答えは、実行している JVM、モード、使用しているガベージ コレクション アルゴリズムなど、さまざまな要因によって異なります。
コード内でこれに依存しないようにしましょう。JVM が OutOfMemoryError をスローしようとしている場合、System.gc() を呼び出してもそれを止めることはできません。ガベージ コレクターは、その状態になる前にできるだけ多くのメモリを解放しようとするからです。実際に使用されているのを見たのは、ユーザーがクリックできるボタンにアタッチされている IDE だけですが、それでもあまり役に立ちません。