使用MinRAMPercentage和MaxRAMPercentation定义堆大小的用法时遇到问题。
当堆大小>250MB,而当堆大小<250毫巴。
我运行了以下2个命令:
第一个命令使用openjdk11
docker run-m 1GB openjdk:11 java-server-XX:+UseG1GC-XX:+ExplicitGCInvokesConcurrent-XX:InitialRAMPercentage=8.0-XX:MinRAMPercentage=50.0-XX:MaxRAMPercentation=8.0-XX:+PrintFlagsFinal-XshowSettings-版本
它为java堆大小限制分配了大约820MB,从而使用了正确的MaxRAMPercentage!
第二个命令是SUSE提供的openjdk
docker run-m 1GB armdocker.rnd.ericsson.se/proj adp cicd drop/bob-java11mvnbuilder:最新的java-server-XX:+UseG1GC-XX:+ExplicitGCInvokesConcurrent-XX:InitialRAMPercentage=80.0-XX:MinRAMPercentage=50.0-XX:MaxRAMPercentance=80.0-XX:+PrintFlagsFinal-XshowSettings-版本
它使用MinRAMPercentage分配512MB。。
因此,第一个命令java使用MaxRAMPercentage,而第二个命令java使用MinRAMPercentation。使用SUSE,它选择MinRAMPercentage 50%*1GB=500 MB
显然,SUSE提供的jdk中有一个补丁切换到MinRAMPercentage,尽管MaxRAMPercentation应该用于此堆大小值(1GB(。
我的问题:
- SUSE中此补丁背后的原因是什么
- 有什么地方我可以找到更多信息吗
- 有没有办法避免这个补丁
谢谢。Thomas
正如我所知,SUSE的决策限制为1.3 GB。也就是说,当你有1GB<对于1.3 GB的容器,它认为它很小,因此使用MinRAMPercentage来确定堆大小。不过,我还找不到相应的补丁。