SUSE 中的堆大小分配使用 MinRAMPercentage 而不是 MaxRAMPercentage 值,尽管堆大小> 250 MB



使用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来确定堆大小。不过,我还找不到相应的补丁。

最新更新