OpenJDK MaxRAMPercentage на машине с очень большим объемом памяти - PullRequest
2 голосов
/ 26 сентября 2019

При запуске OpenJDK 11 на машине с 60 ГБ памяти (и более), MaxRAMPercentage позволяет выделить только около 30 ГБ.

Это работает правильно:

>~# 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 Ответ

3 голосов
/ 26 сентября 2019

Проблема заключается в ошибке / функции, связанной с CompressedOops (CompressedOops ограничивает размер кучи до 32 ГБ, а -Xmx отключает CompressedOops, MaxRAMPercentage - нет).

Чтобы решить / обойти это, вы можете:

  • Добавить -XX:-UseCompressedOops для отключения CompressedOops
  • Использовать OpenJDK13, где исправлена ​​ошибка

Отчет об ошибке здесь .HT @Arnaud за то, что направил меня туда.

...