Поскольку вы помечаете вопрос как "tomcat", я не согласен с ответом, который вы опубликовали. Или, по крайней мере, с применимостью этого ответа: когда tomcat запускается, вы хотите установить определенные параметры. Когда вы настраиваете любой процесс Java, который когда-либо начинает иметь эти параметры, вы настраиваете себя на случай аварии:
Когда вы выключаете tomcat, он запускает очень недолговечный процесс Java, который подключается к работающему серверу, сигнализирует о его завершении, а затем завершает работу. Для этой операции вам не нужна какая-либо конкретная память, скорее, она может завершиться неудачей, если у вас нет 5 ГБ свободной памяти (-Xms5000m
), когда вы хотите выключить tomcat.
Если вы запустите jconsole для проверки компонентов JMX Tomcat, чтобы увидеть, что происходит, вам снова понадобится 5G. И для любого другого маленького Java-инструмента, который будет работать на вашем компьютере и который вы даже не знаете о пока . (поскольку вы делаете настройку действительно глобальной: Любой процесс, который любой пользователь запускает, может навязать эти огромные требования к ресурсам.
Что теперь делать вместо этого?
Для tomcat в среде Linux (вы помечаете «redhat»), создайте файл в tomcat's bin/setenv.sh
и установите переменную CATALINA_OPTS
, например.
CATALINA_OPTS="$CATALINA_OPTS -Xms5000m -Xmx5000m"
Если Tomcat работает как демон, возможно, лучше использовать этот параметр в других местах.
Для завершения, даже если вы не помечаете Windows: для Windows сделайте аналог в bin / setenv.bat. Эти файлы не являются частью дистрибутива Tomcat, например, они не будут перезаписаны при обновлении. Но если они там, они будут приняты во внимание. Для служб Windows используйте конфигурацию службы для соответствующих настроек
Еще одна рекомендация: для сервера production вы должны установить для -Xms
то же значение, что и для -Xmx
. Причина: если максимальный объем памяти недоступен при запуске, вы должны выяснить это немедленно, а не в воскресенье вечером в 3 часа ночи, когда JVM решит, что она хотела бы иметь больший кусок вашей памяти.