ガベージ コレクションの一時停止を最小限に抑えるように JVM パラメーターを構成するには、次の手順に従います。
1. ヒープ サイズを設定します:
- 最大ヒープ サイズを設定します:- 最大ヒープ サイズを設定するには、「-Xmx」フラグを使用します。
- たとえば、「-Xmx2g」は最大ヒープ サイズを 2GB に設定します。
- 初期ヒープ サイズを設定します:
- `-Xms` フラグを使用して、初期ヒープ サイズを設定します。
- たとえば、「-Xms2g」は初期ヒープ サイズを 2GB に設定します。
2. 若い世代のサイズを設定:
- 若い世代のサイズを設定:- 若い世代のサイズを設定するには、「-Xmn」フラグを使用します。
- たとえば、「-Xmn1g」は若い世代のサイズを 1GB に設定します。
3. ガベージ コレクターを設定します:
- ガベージ ファースト (G1) ガベージ コレクターを使用します:- G1 ガベージ コレクターを有効にするには、`-XX:+UseG1GC` フラグを使用します。
- このコレクターは、一時停止時間を最小限に抑えるように設計されています。
4. 最大一時停止時間を設定します:
- 最大一時停止時間を設定します:- 最大一時停止時間を設定するには、`-XX:MaxGCPauseMillis` フラグを使用します。
- たとえば、「-XX:MaxGCPauseMillis=200」は、最大一時停止時間を 200 ミリ秒に設定します。
5. 並列 GC スレッドを設定します:
- 並列 GC スレッドの数を設定:- `-XX:ParallelGCThreads` フラグを使用して、並列 GC スレッドの数を設定します。
- たとえば、「-XX:ParallelGCThreads=20」は、並列 GC スレッドの数を 20 に設定します。
6. 同時 GC スレッドを設定します:
- 同時 GC スレッド数を設定:- `-XX:ConcGCThreads` フラグを使用して、同時 GC スレッドの数を設定します。
- たとえば、「-XX:ConcGCThreads=5」は、同時 GC スレッドの数を 5 に設定します。
7. 開始ヒープ占有率を設定します:
- 開始時のヒープ占有率を設定します:- `-XX:InitiatingHeapOccupancyPercent` フラグを使用して、開始ヒープ占有率を設定します。
- たとえば、「-XX:InitiatingHeapOccupancyPercent=70」は、開始ヒープ占有率を 70% に設定します。
8. 監視と調整:
- ガベージ コレクションの監視:- VisualVM や GCeasy などのツールを使用してガベージ コレクションを監視します。
- 必要に応じて JVM パラメータを調整して、一時停止時間を最小限に抑えます。
これらの手順に従うことで、JVM パラメータを構成してガベージ コレクションの一時停止を最小限に抑え、アプリケーションの効率的なパフォーマンスを確保できます。
引用:[1] https://www.uber.com/blog/jvm-tuning-garbage-collection/
[2] https://docs.datastax.com/en/dse/6.8/managing/operations/configure-garbage-first-collection.html
[3] https://sematext.com/blog/java-garbage-collection-tuning/
[4] https://docs.oracle.com/cd/E55119_01/doc.71/e55122/cnf_jvmgc.htm
[5] https://docs.oracle.com/cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm