Разъяснение значения новых параметров памяти JVM InitialRAMPercentage и MinRAMPercentage - PullRequest
0 голосов
/ 21 января 2019

Ссылка: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8186315

Я действительно изо всех сил пытаюсь выяснить, что делает MinRAMPercentage, особенно по сравнению с InitialRAMPercentage.

Я предположил, что InitialRAMPercentage устанавливает количество кучи при запуске, чтоMinRAMPercentage и MaxRAMPercentage устанавливают нижний и верхний предел кучи, которой JVM разрешается сжиматься / увеличиваться до.

Очевидно, что это не так.Когда я запускаю JVM (с UseContainerSupport, имеющим эти новые параметры настройки памяти), например, так:

java -XX:+UseContainerSupport -XX:InitialRAMPercentage=40.0 -XX:MinRAMPercentage=20.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -version | grep Heap

InitialHeap и MaxHeap устанавливаются, я не могу найти значение «Минимальный размер кучи»;Следовательно, этот MinRAMPercentage, кажется, никогда не привыкнет.

Супер запутался, и, видимо, я не единственный;парни OpenJ9, похоже, также не полностью разбирают назначение этих опций, так как я собрал здесь и здесь .Похоже, они решили просто не реализовывать MinRAMPercentage на самом деле.

Итак: каково реальное предполагаемое использование и эффект установки MinRAMPercentage?

1 Ответ

0 голосов
/ 22 января 2019

-XX:InitialRAMPercentage используется для расчета начального размера кучи , когда InitialHeapSize / -Xms не задано.

Звучит нелогично, но -XX:MaxRAMPercentage и -XX:MinRAMPercentage используются для вычисления максимального размера кучи , когда MaxHeapSize / -Xmx не задано:

  • Для систем с небольшой физической памятью MaxHeapSize оценивается как

    phys_mem * MinRAMPercentage / 100  (if this value is less than 96M)
    
  • В противном случае (немалая физическая память) MaxHeapSize оценивается как

    MAX(phys_mem * MaxRAMPercentage / 100, 96M)
    

Точная формула немного сложнее, так как учитывает и другие факторы.

Примечание: алгоритм расчета начального и максимального размера кучи зависит от конкретной версии JVM. Предпочтительным способом управления размером кучи является явная установка Xmx и Xms.

См. Также этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...