Я пытаюсь увеличить память кучи java на нашем производственном сервере. Вот два способа, которыми я пытаюсь.
Я попробовал следующий ответ по этой ссылке.I установили память Java с помощью следующей команды.
export _JAVA_OPTIONS = "-Xmx10g"
java -XshowSettings:vm
Таким образом, размер кучи java не увеличивается навсегда.
Я пробовал этот ответ.I попытался увеличить размер кучи java с помощью следующей команды.
java -XX:+PrintFlagsFinal -Xms5240m -Xmx10240m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=128m -version | grep -iE 'HeapSize|PermSize|ThreadStackSize
Таким образом, размер кучи java не увеличивается навсегда.
Таким образом, мне не удалось навсегда изменить размер кучи java. Итак, как я могу навсегда изменить размер кучи java? Пожалуйста, предложите мне способ. Заранее спасибо.
Здесь я хочу иметь в виду следующее значение слова «постоянно».
Значение: если я запустил следующую команду, я хочу, чтобы размер кучи был одинаковым каждый раз, когда я открываю оболочку.
java -XX:+PrintFlagsFinal -version | grep -iE'HeapSize|PermSize|ThreadStackSize'
См. Обновленные вопросы.
Вы читали stackoverflow.com/questions/28327620/…
Я действительно не знаю ответ, отправленный вами.
Вы не можете - изменить скрипт, запускающий ваш сервер.




После 4-часового запроса я нашел следующее решение. Чтобы изменить общесистемный профиль, перейдите в / etc / profile. В качестве альтернативы вы можете запустить следующую команду.
1. vi /etc/profile
2. export _JAVA_OPTIONS = "-Xms5000m -Xmx12000m"
Чтобы проверить размер памяти кучи java, выполните следующую команду:
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
Эта команда выводит на моем компьютере следующее.
Picked up _JAVA_OPTIONS: -Xms5000m -Xmx12000m
intx CompilerThreadStackSize = 0 {pd product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 5242880000 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 12582912000 {product}
intx ThreadStackSize = 1024 {pd product}
intx VMThreadStackSize = 1024 {pd product}
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Вы можете найти следующий урок очень полезным.
https://www.mkyong.com/java/find-out-your-java-heap-memory-size/
Я объект сильно. Хотя это технически правильно, вы не хотите делать этого в своей системе: см. Мой альтернативный ответ.
Просто настройте аргументы памяти в экземпляре java runnable, который вам нужен. Каждый экземпляр Java имеет собственное пространство jvm.
Поскольку вы помечаете вопрос словом «кот», я не согласен с опубликованным вами ответом. Или, по крайней мере, с применимостью этого ответа: при запуске tomcat вы хотите установить определенные параметры. Когда вы настраиваете Java-процесс любой, который когда-либо начинает иметь эти параметры, вы настраиваете себя на катастрофу:
Когда вы выключаете tomcat, он запускает очень недолговечный процесс Java, который подключается к работающему серверу, сигнализирует ему о завершении работы, а затем завершается. Для этой операции вам не нужна какая-либо конкретная память, скорее, это может потерпеть неудачу, если у вас нет 5 ГБ свободной памяти (-Xms5000m), когда вы хотите выключить Tomcat.
Если вы запустите jconsole для проверки JMX-бинов tomcat, чтобы увидеть, что происходит, вам снова понадобится 5G. И для любого другого небольшого java-инструмента, который будет работать на вашем компьютере и который вы даже не знаете о все же. (поскольку вы делаете настройку действительно глобальной: процесс Любой, запускаемый пользователем любой, может налагать эти огромные требования к ресурсам.
Что же делать вместо этого?
Для tomcat в среде Linux (вы помечаете "redhat") создайте файл в Tomcat bin/setenv.sh и установите переменную CATALINA_OPTS, например
CATALINA_OPTS = "$CATALINA_OPTS -Xms5000m -Xmx5000m"
Если Tomcat работает как демон, может быть лучше установить этот параметр в других местах.
Для полноты, даже если вы не помечаете Windows: для Windows сделайте то же самое в bin / setenv.bat. Эти файлы не являются частью дистрибутива tomcat, например они не будут перезаписаны при обновлении. Но если они есть, они будут учтены. Для служб Windows используйте конфигурацию службы для соответствующих настроек.
Другая рекомендация: для сервера производство вы хотите установить -Xms на то же значение, что и -Xmx. Причина: если максимальный объем памяти недоступен при запуске, вы хотите выяснить это немедленно, а не в воскресенье вечером в 3 часа ночи, когда JVM решит, что она хотела бы иметь больший кусок вашей памяти.
Могу ли я запустить сервер tomcat с помощью ./startup.sh после установки параметра в bin / setenv.sh? Или мне нужно запустить сервер tomcat с помощью ./catalina.sh?
Да, конечно. startup.sh в конце вызывает catalina.sh, а catalina.sh встраивает setenv.sh (если он существует). Так что и ./startup.sh, и ./catalina.sh run работают.
Вторая веская причина для установки одного и того же значения -Xms и -Xmx в стабильной (производственной) среде - это эффективность / производительность; если вы в конечном итоге собираетесь расширить до -Xmx, вы можете сразу же захватить эту память, а не получать ее динамически по мере необходимости.
На Rhel7 или CentOS7 вам следует изменить /usr/lib/systemd/system/tomcat.service:
Environment = "CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Что значит
permanently?