I have a problem when defining usage of heap size using MinRAMPercentage and MaxRAMPercentage.
The MaxRAMPercentage value is used when heap size is > 250 MB while the MinRAMPercentage is used when heap size < 250 MB.
I have run the following 2 commands:
First command is with openjdk11
docker run -m 1GB openjdk:11 java -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:InitialRAMPercentage=80.0 -XX:MinRAMPercentage=50.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -XshowSettings -version
It allocates around 820MB for the java heap size limit, thereby using the MaxRAMPercentage which is correct!
Second command is with SUSE provided openjdk
docker run -m 1GB armdocker.rnd.ericsson.se/proj-adp-cicd-drop/bob-java11mvnbuilder:latest java -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:InitialRAMPercentage=80.0 -XX:MinRAMPercentage=50.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -XshowSettings -version
It allocates 512MB which it allocates using the MinRAMPercentage..
So it seems that the First command java uses MaxRAMPercentage, while the second command java uses MinRAMPercentage. With SUSE it picks MinRAMPercentage 50%*1GB = 500 MB
Apparently there is a patch in SUSE provided jdk that switches to MinRAMPercentage although MaxRAMPercentage should be used for this heap size value (1 GB).
My questions:
- What is the reasoning behind this patch in SUSE?
- Is there a place where I can find more information
- Is there a way to avoid this patch?
Thanks. Thomas