在具有60 GB(或更多)内存的计算机上运行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
应该有界吗? 最佳答案
问题是与CompressedOops相关的错误/功能(CompressedOops将堆大小限制为32GB,而-Xmx
禁用CompressedOops,而MaxRAMPercentage
则没有)。
要解决/解决方法,您可以:
添加-XX:-UseCompressedOops
以禁用CompressedOops
使用OpenJDK13(已修复错误)
错误报告为here。 HT @Arnaud将我定向到那里。