Установка размер кучи Java под Apache Karaf
-
28-10-2019 - |
Вопрос
Прошу прощения, если это дубликат, но я не могу найти это нигде.
Как лучше всего увеличить максимальный размер кучи Java при использовании Apache Karaf?
В настоящее время я изменил следующую строку в файле karaf.bat:
set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M
.
Я чувствую, что изменение файла BAT не является лучшим решением. Кроме того, ни один из файлов конфигурации, кажется, не имеет места для этого.
Спасибо
Решение 2
Обновление Karaf 2.2.3 показывает новый файл летучей мыши.
if "%JAVA_MIN_MEM%" == "" (
set JAVA_MIN_MEM=128M
)
if "%JAVA_MAX_MEM%" == "" (
set JAVA_MAX_MEM=512M
)
if "%JAVA_PERM_MEM%" == "" (
set JAVA_PERM_MEM=16M
)
if "%JAVA_MAX_PERM_MEM%" == "" (
set JAVA_MAX_PERM_MEM=64M
)
Это означает, что можно просто создать системную переменную вместо изменения файла BAT.
Другие советы
(По крайней мере) в Карафе 2.2.10:
Если запустить Караф через bin/start
Как отметил Форд Го, значения памяти могут быть настроены в bin/setenv
файл:
export JAVA_MIN_MEM=256M # Minimum memory for the JVM
export JAVA_MAX_MEM=1024M # Maximum memory for the JVM
export JAVA_PERM_MEM=128M # Minimum perm memory for the JVM
export JAVA_MAX_PERM_MEM=256M # Maximum memory for the JVM
Если запустить Караф в качестве услуги (karaf-service
)
В этом случае любая экспортируемая переменная, по -видимому, игнорируется.
Максимальный размер кучи Java может быть определен в etc/karaf-wrapper.conf
:
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024
Что я бы сделал в твоей ситуации.
Я видел, как люди предлагают использовать старт службы, который позволяет вам определить аргументы командной строки.
Мне понравилось использовать Webconsole, поэтому я изменил его, поэтому он прочитал файл karaf.vmoptions для приложений, которые он начинает. Это требует исправления кода, но это оказалось очень полезным.
В каталоге Bin есть файл Setenv (.bat), вы можете установить там Max/Min Mem.
setenv
не был загружен для меня (используя обертку KARAF), поэтому я положил ее в конфигурацию обертки: (/opt/apache-servicemix-6.1.3/etc/karaf-wrapper.conf
в моем случае)
# JVM Parameters
# note that n is the parameter number starting from 1.
wrapper.java.additional.1=-Dkaraf.home=%KARAF_HOME%
wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE%
wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA%
wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC%
wrapper.java.additional.5=-Dcom.sun.management.jmxremote
wrapper.java.additional.6=-Dkaraf.startLocalConsole=false
wrapper.java.additional.7=-Dkaraf.startRemoteShell=true
wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed
wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext
# added by me
wrapper.java.additional.10=-XX:PermSize=512m
wrapper.java.additional.11=-XX:MaxPermSize=512m
Проверьте перед перезапуском:
# get process id of you running instance
jps -lvm
# or
ps aux | grep java
# check memory before and after restarting the service to see wether it changed
jmap -heap $MY_PID 2>/dev/null | sed -ne '/Heap Configuration/,$p';