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 InitialRAMPercentage , MinRAMPercentage , 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.