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

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

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

6 ответов

Решение

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

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

set JAVA_OPTS="-Xms128m -Xmx256m"  

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

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass

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

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

Вы можете использовать JAVA_TOOL_OPTIONS.

Пример:

export JAVA_TOOL_OPTIONS=-Xmx512m

Это было упомянуто в некоторых комментариях и в другом ответе.

Вопрос OP довольно старый, но, поскольку это первый результат Google для этого вопроса, я подумал, что добавлю здесь ответ для ясности.

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

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

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

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

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

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

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

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

Другие вопросы по тегам