В заключение!
Начиная с Java 8u191 у вас теперь есть варианты:
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage
это можно использовать для определения размера кучи в процентах от используемой физической памяти. (что совпадает с установленной оперативной памятью меньше, чем использует ядро).
См. Примечания к выпуску для Java8 u191 для получения дополнительной информации. Обратите внимание, что параметры упоминаются под заголовком Docker, но на самом деле они применяются независимо от того, находитесь ли вы в среде Docker или в традиционной среде.
Значение по умолчанию для MaxRAMPercentage
25%. Это крайне консервативно.
Мое собственное правило: если ваш хост более или менее выделен для запуска данного Java-приложения, то вы можете без проблем значительно увеличить его. Если вы работаете в Linux, работаете только со стандартными демонами и устанавливаете оперативную память где-то около 1 Гб и более, тогда я без колебаний использую 75% для кучи JVM. Опять же, помните, что это 75% доступной оперативной памяти , а не установленной . Остаются другие процессы пользователя земли, которые могут выполняться на хосте, и другие типы памяти, которые нужны JVM (например, для стека). Все вместе, это обычно хорошо вписывается в оставшиеся 25%. Очевидно, что при еще большем объеме установленной оперативной памяти ставка 75% безопаснее и безопаснее. (Я бы хотел, чтобы ребята из JDK реализовали опцию, в которой вы могли бы указать лестницу)
Настройка MaxRAMPercentage
опции выглядит следующим образом:
java -XX:MaxRAMPercentage=75.0 ....
Обратите внимание, что эти процентные значения имеют тип 'double', и поэтому вы должны указывать их с десятичной точкой. Вы получите несколько странную ошибку, если вы используете «75» вместо «75.0».