Java >> Java tutorial >  >> JVM

JVM-parametre InitialRAMPercentage, MinRAMPercentage og MaxRAMPercentage

1. Oversigt

I denne øvelse vil vi diskutere nogle få JVM-parametre, vi kan bruge til at indstille RAM-procenten for JVM.

Indført i Java 8, parametrene InitialRAMPercentage , MinRAMPercentage , og MaxRAMPercentage hjælp til at konfigurere heap-størrelsen for et Java-program.

2. -XX:InitialRAMPercentage

InitialRAMPercentage JVM-parameteren giver os mulighed for at konfigurere den indledende heapstørrelse af Java-applikationen. Det er en procentdel af den samlede hukommelse på en fysisk server eller container , videregivet som en dobbelt værdi.

Hvis vi f.eks. indstiller-XX:InitialRAMPercentage=50.0 for en fysisk server på 1 GB fuld hukommelse, vil den oprindelige heap-størrelse være omkring 500 MB (50 % af 1 GB).

Lad os starte med at tjekke standardværdien for IntialRAMPercentage i JVM:

$ 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)

Lad os derefter indstille den oprindelige heap-størrelse på 50 % for en 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)

Det er vigtigt at bemærke, at JVM ignorerer InitialRAMPercentage når vi konfigurerer -Xms mulighed.

3. -XX:MinRAMPercentage

MinRAMPercentage parameter, i modsætning til navnet, tillader indstilling af den maksimale heap-størrelse for en JVM, der kører med en lille mængde hukommelse (mindre end 200 MB).

Først vil vi undersøge standardværdien for 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)

Lad os derefter bruge parameteren til at indstille den maksimale heap-størrelse for en JVM med en samlet hukommelse på 100 MB:

$ 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 ignorerer også MaxRAMPercentage parameter, mens du indstiller den maksimale heap-størrelse for en lille hukommelsesserver/-beholder:

$ 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 parameter tillader indstilling af den maksimale heap-størrelse for en JVM, der kører med en stor mængde hukommelse (større end 200 MB).

Lad os først undersøge standardværdien for 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)

Derefter kan vi bruge parameteren til at indstille den maksimale heap-størrelse til 60 % for en JVM med 500 MB samlet hukommelse:

$ 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)

På samme måde ignorerer JVM MinRAMPercentage parameter for en stor hukommelsesserver/beholder:

$ 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. Konklusion

I denne korte artikel diskuterede vi brugen af ​​JVM-parametre InitialRAMPercentageMinRAMPercentage , og MaxRAMPercentage for at indstille de RAM-procenter, som JVM'en vil bruge til heapen.

Først tjekkede vi standardværdierne for flagene, der er indstillet på JVM. Derefter brugte vi JVM-parametrene til at indstille de indledende og maksimale heap-størrelser.


Java tag