OpenJDK MaxRAMPercentage на машине с очень большим объемом памяти

При запуске 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 быть ограниченным?


person daphshez    schedule 26.09.2019    source источник
comment
comment
Возможно, этот ответ может оказаться полезным.   -  person Boris    schedule 26.09.2019
comment
@Arnaud, спасибо, это действительно была проблема. Вы хотите поставить это как ответ, чтобы я мог проголосовать за него?   -  person daphshez    schedule 26.09.2019
comment
Что ж, @daphshez, это был просто намек, и я не знаю, как это исправить/обойти. Если вам так понятнее, не стесняйтесь ответить на свой вопрос :)   -  person Arnaud    schedule 26.09.2019


Ответы (1)


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

Чтобы решить/обходной путь, вы можете:

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

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

person daphshez    schedule 26.09.2019