JVMパラメーターInitialRAMPercentage、MinRAMPercentage、およびMaxRAMPercentage
1. 概要
このチュートリアルでは、JVMのRAMパーセンテージを設定するために使用できるいくつかのJVMパラメーターについて説明します。
Java8で導入されたパラメーターInitialRAMPercentage 、 MinRAMPercentage 、および MaxRAMPercentage は、Javaアプリケーションのヒープサイズを構成するのに役立ちます。
2. -XX:InitialRAMPercentage
InitialRAMPercentage JVMパラメーターを使用すると、Javaアプリケーションの初期ヒープサイズを構成できます。 これは、物理サーバーまたはコンテナーの合計メモリのパーセンテージであり、double値として渡されます。
たとえば、1GBのフルメモリの物理サーバーに対して-XX:InitialRAMPercentage = 50.0 を設定すると、初期ヒープサイズは約500 MB(50 % o f 1 GB)になります。
まず、JVMのInitialRAMPercentageのデフォルト値を確認しましょう。
$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "InitialRAMPercentage"
double InitialRAMPercentage = 1.562500 {product}
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
次に、初期ヒープサイズを50% fまたはJVMに設定しましょう。
$ docker run -m 1GB openjdk:8 java -XX:InitialRAMPercentage=50.0 -XX:+PrintFlagsFinal -version | grep -E "InitialRAMPercentage"
double InitialRAMPercentage := 50.000000 {product}
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
-Xms オプションを構成する場合、JVMはInitialRAMPercentageを無視することに注意することが重要です。
3. -XX:MinRAMPercentage
MinRAMPercentage パラメーターは、その名前とは異なり、少量のメモリー(200MB未満)で実行されているJVMの最大ヒープサイズを設定できます。
まず、MinRAMPercentageのデフォルト値について説明します。
$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "MinRAMPercentage"
double MinRAMPercentage = 50.000000 {product}
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
次に、パラメータを使用して、合計メモリが100MBのJVMの最大ヒープサイズを設定しましょう。
$ docker run -m 100MB openjdk:8 java -XX:MinRAMPercentage=80.0 -XshowSettings:VM -version
VM settings:
Max. Heap Size (Estimated): 77.38M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
また、JVMは、小さなメモリサーバー/コンテナの最大ヒープサイズを設定するときに、MaxRAMPercentageパラメータを無視します。
$ docker run -m 100MB openjdk:8 java -XX:MinRAMPercentage=80.0 -XX:MaxRAMPercentage=50.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 77.38M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
4. -XX:MaxRAMPercentage
MaxRAMPercentage パラメーターを使用すると、大量のメモリ(200 MBを超える)で実行されているJVMの最大ヒープサイズを設定できます。
まず、MaxRAMPercentageのデフォルト値を調べてみましょう。
$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "MaxRAMPercentage"
double MaxRAMPercentage = 25.000000 {product}
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
次に、このパラメーターを使用して、最大ヒープサイズを60% fまたは合計500MBのメモリを備えたJVMに設定できます。
$ docker run -m 500MB openjdk:8 java -XX:MaxRAMPercentage=60.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 290.00M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
同様に、JVMは、大容量メモリサーバー/コンテナのMinRAMPercentageパラメータを無視します。
$ docker run -m 500MB openjdk:8 java -XX:MaxRAMPercentage=60.0 -XX:MinRAMPercentage=30.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 290.00M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
5. 結論
この短い記事では、JVMパラメーターの使用について説明しました InitialRAMPercentage, MinRAMPercentage、 と MaxRAMPercentage JVMがヒープに使用するRAMのパーセンテージを設定します。
まず、JVMに設定されているフラグのデフォルト値を確認しました。 次に、JVMパラメーターを使用して、初期ヒープサイズと最大ヒープサイズを設定しました。