具有大量内存的机器上的 OpenJDK MaxRAMPercentage
OpenJDK MaxRAMPercentage on a machine with very large amount of memory
当 运行 OpenJDK 11 在具有 60GB 内存(或更多)内存的机器上时,
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
应该是有界的吗?
问题是 bug/feature 与 CompressedOops 相关(CompressedOops 将堆大小限制为 32GB,而 -Xmx
禁用 CompressedOops,而 MaxRAMPercentage
则不)。
要解决/解决方法,您可以:
- 添加
-XX:-UseCompressedOops
以禁用 CompressedOops
- 使用OpenJDK13,bug已修复
错误报告是 here。 HT @Arnaud 带我去那里。
当 运行 OpenJDK 11 在具有 60GB 内存(或更多)内存的机器上时,
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
应该是有界的吗?
问题是 bug/feature 与 CompressedOops 相关(CompressedOops 将堆大小限制为 32GB,而 -Xmx
禁用 CompressedOops,而 MaxRAMPercentage
则不)。
要解决/解决方法,您可以:
- 添加
-XX:-UseCompressedOops
以禁用 CompressedOops - 使用OpenJDK13,bug已修复
错误报告是 here。 HT @Arnaud 带我去那里。