Как установить минимальный и максимальный размер кучи в Java через переменные среды? - PullRequest
62 голосов
/ 06 января 2009

Как установить минимальный и максимальный размер кучи Java с помощью переменных среды?

Я знаю, что размеры кучи могут быть установлены при запуске java, но я бы хотел настроить это с помощью переменных среды на моем сервере.

Ответы [ 6 ]

69 голосов
/ 06 января 2009

Вы не можете сделать это, используя переменные окружения напрямую. Вам нужно использовать набор «нестандартных» опций, которые передаются команде java. Запустите: Java -X для деталей. Опции, которые вы ищете: -Xmx и -Xms (это «начальный» размер кучи, так что, вероятно, то, что вы ищете.)

Некоторые продукты, такие как Ant или Tomcat, могут поставляться с пакетным сценарием, который ищет переменную среды JAVA_OPTS, но он не является частью среды выполнения Java. Если вы используете один из этих продуктов, вы можете установить переменную следующим образом:

set JAVA_OPTS="-Xms128m -Xmx256m"  

Вы также можете использовать этот подход с помощью собственной командной строки, например:

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass
46 голосов
/ 12 июля 2013

Если вы хотите, чтобы какой-либо процесс java, а не только ant или Tomcat, выбирал такие параметры, как -Xmx, используйте переменную окружения _JAVA_OPTIONS.

В Баш: export _JAVA_OPTIONS="-Xmx1g"

13 голосов
/ 04 октября 2012

На самом деле, существует способ установить глобальные значения по умолчанию для JVM Sun через переменные среды.

См. Как установить системное свойство java, чтобы оно действовало всякий раз, когда я запускаю JVM без добавления его в аргументы командной строки .

9 голосов
/ 06 января 2009

Вы не можете сделать это, используя переменные окружения. Это делается с помощью «нестандартных» опций. Выполните: java -X для деталей. Варианты, которые вы ищете: -Xmx и -Xms (это «начальный» размер кучи, так что, вероятно, вы ищете.)

4 голосов
/ 06 января 2009

Я думаю, что ваш единственный вариант - заключить java в скрипт, который подставляет переменные окружения в командную строку

3 голосов
/ 18 февраля 2010

Пара заметок:

  1. Apache ant ничего не знает о JAVA_OPTS, в то время как скрипты запуска Tomcat знают об этом. Для Apache ant используйте ANT_OPTS, чтобы повлиять на среду для JVM, которая запускает / ant /, но не для вещей, которые ant может запустить.

  2. Максимальный размер кучи, который вы можете установить, полностью зависит от среды: для большинства 32-разрядных систем максимальный объем кучи, который вы можете запросить, независимо от доступной памяти, находится в диапазоне 2 ГБ. Самая большая куча в 64-битной системе - «действительно большая». Кроме того, вы также практически ограничены физической памятью, так как куча управляется JVM, и вы не хотите, чтобы на диске происходило много операций подкачки.

  3. Для серверных сред вы обычно хотите установить -Xms и -Xmx на одно и то же значение: это установит размер кучи на определенный размер, и сборщику мусора будет меньше работы, потому что куча будет никогда не нужно менять размер.

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