具有大量内存的计算机上的OpenJDK MaxRAMPercentage

时间:2019-09-26 14:42:39

标签: java openjdk-11

在具有60GB(或更多)内存的计算机上运行OpenJDK 11时, MaxRAMPercentage仅允许我分配大约30GB。

这可以正常工作:

>~# java   -XX:MaxRAMPercentage=10 -XshowSettings:vm -version
VM settings:
    Max. Heap Size (Estimated): 5.90G
    Using VM: OpenJDK 64-Bit Server VM

openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Debian-1bpo91, mixed mode, sharing)

但是当该百分比产生的堆大小超过30G时,我得到:

>~# java   -XX:MaxRAMPercentage=75 -XshowSettings:vm -version
VM settings:
    Max. Heap Size (Estimated): 29.97G
    Using VM: OpenJDK 64-Bit Server VM

openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Debian-1bpo91, mixed mode, sharing)

使用良好的旧-Xmx可以正常工作(例如-Xmx50G)。

我想念什么? MaxRAMPercentage应该有界吗?

1 个答案:

答案 0 :(得分:4)

问题是与CompressedOops相关的错误/功能(CompressedOops将堆大小限制为32GB,而-Xmx禁用CompressedOops,而MaxRAMPercentage则没有)。

要解决/解决方法,您可以:

  • 添加-XX:-UseCompressedOops以禁用CompressedOops
  • 使用已修复该错误的OpenJDK13

错误报告为here。 HT @Arnaud将我定向到那里。