Установка размера кучи Java под Apache Karaf - PullRequest
9 голосов
/ 09 сентября 2011

Я прошу прощения, если это дубликат, но я не могу найти этот ответ где-либо.

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

В настоящее время я изменил следующую строку в файле karaf.bat:

set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M.

Мне кажется, что изменение файла bat - не лучшее решение,Кроме того, ни в одном из конфигурационных файлов, похоже, нет места для этого.

Спасибо

Ответы [ 5 ]

8 голосов
/ 16 июля 2013

(минимум) в караф 2.2.10:

Если запустить karaf через bin/start

Как указал Ford Guo, значения памяти можно настроить в файле 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 как сервис (karaf-service)

В этом случае любая экспортируемая переменная, похоже, игнорируется.

Максимальный размер кучи Java может быть определен в etc/karaf-wrapper.conf:

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024
7 голосов
/ 13 сентября 2011

Обновление до Karaf 2.2.3 открывает новый файл bat.

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.

0 голосов
/ 11 июня 2017

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';
0 голосов
/ 21 июня 2012

в каталоге bin есть файл setenv (.bat), Вы можете установить максимальную / минимальную мем там.

0 голосов
/ 09 сентября 2011

Это то, что я бы сделал в вашей ситуации.

Я видел, как люди предлагают использовать запуск службы, который позволяет вам определять аргументы командной строки.

Мне понравилось использование веб-консоли, поэтомуизменил его так, чтобы он читал файл karaf.vmoptions для приложений, которые он запускает.Это требует исправления кода, но это оказалось очень полезным.

...