Java Force ガベージ コレクション
このチュートリアルでは、Java でガベージ コレクションを強制する方法を示します。
Java Force ガベージ コレクション
ヒープ使用率が 100% に近づくたびに、OutOfMemoryError
のリスクが最大に増加します。 その時点で、JVM はガベージ コレクションを強制し、メモリを解放する必要があります。
ほとんどの場合、JVM にガベージ コレクションを強制することはできませんが、必要に応じていくつかのメソッドを使用してガベージ コレクションを実行できます。
このチュートリアルでは、Java でのガベージ コレクションのさまざまな方法を示します。
Java でのガベージ コレクションのために System.gc()
を呼び出す
System.GC()
メソッドは、ガベージ コレクションを実行するために Java コードのどこでも呼び出すことができます。 ガベージ コレクションに優先順位が付けられ、ガベージ コレクションが呼び出されるたびに数秒で実行されます。
このメソッドの構文は次のとおりです。
System.gc();
コード内の任意の場所でガベージ コレクションを実行するには、System.gc()
を呼び出すだけです。 これは、ガベージ コレクションを強制する場合と同様に機能します。
Java でガベージ コレクションを実行するには、Runtime.getRuntime().gc()
を呼び出します。
Runtime.getRuntime().gc()
は System.gc()
を呼び出すため、同様の方法でガベージ コレクションを優先します。 Runtime.getRuntime()
は、Java コードで端末コマンドを実行します。
メソッド Runtime.getRuntime().gc()
と System.gc
は同じです。 このメソッドの構文は次のとおりです。
Runtime.getRuntime().gc();
構文のようにこのメソッドを呼び出すだけで、JVM はガベージ コレクションを実行してメモリ領域を解放します。
jcmd
を使用して Java でガベージ コレクションを強制する
jcmd
Java 診断コマンドは、ガベージ コレクション ルーチンをトリガーする JDK の組み込みユーティリティです。 このガベージ コレクションは、JVM が一時停止を安全にスケジュールできる場合にトリガーされます。
JVM が一時停止を実行できない場合、このコマンドは jmap
と同じエラーをスローします。
このコマンドの構文は次のとおりです。
jcmd 1234 GC.run
番号はプロセス ID で、GC.run
はガベージ コレクションを呼び出すために使用されます。
Java Mission Control または JConsole を使用して Java でガベージ コレクションを強制する
Java Mission Control と JConsole は、jcmd
コマンドと対話する使いやすいインターフェースを提供します。 Java Mission Control または JConsole は、JVM にガベージ コレクションを強制できます。
JConsole ツールは、メモリ管理ページにガベージ コレクションを実行
という名前のボタンを提供します。 クリックすると、JVM にガベージ コレクションを実行させることができます。
Java Mission Control は、開発者がボタンをクリックするだけで実行できる GC.run
を含む任意の jcmd
機能を選択するのに役立ちます。
どちらのツールも、バックグラウンドで jcmd
ガベージ コレクション コマンドを呼び出します。
jmap
を使用して Java でガベージ コレクションを強制する
JMAP (Java メモリ マップ) は、ヒープのヒストグラムを出力する方法を提供します。 また、jmap
コマンドが呼び出されるたびに、ガベージ コレクション ルーチンが強制されますが、これはガベージ コレクションを強制する正しい方法とは見なされません。
JVM にワークロードがあり、ガベージ コレクションを実行できない場合、jmap
コマンドはエラーをスローします。
次のコマンドを参照してください。
jmap -histo:live 1234
live
はヒストグラム オプションで、その前の数字はプロセス ID です。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook