2011-09-08 16 views
7

Disculpe si este es un duplicado, pero parece que no puedo encontrarlo en ninguna parte.Configuración del tamaño del almacenamiento dinámico de Java en Apache Karaf

¿Cuál es la mejor manera de aumentar el tamaño máximo de almacenamiento dinámico de Java al usar Apache Karaf?

Actualmente, modifiqué la siguiente línea en el archivo karaf.bat:

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

Tengo ganas de modificar el archivo bat no es la mejor solución. Además, ninguno de los archivos de configuración parece tener un lugar para poner esto.

Gracias

Respuesta

7

La actualización a Karaf 2.2.3 revela un nuevo archivo 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 
) 

Esto significa que uno solo puede crear una variable de sistema en lugar de modificar el archivo bat.

0

Que lo que yo haría en su situación.

He visto personas que sugieren utilizar un inicio de servicio que le permite definir los argumentos de la línea de comando.

Me gustó usar la consola web, así que la cambié para que lea un archivo karaf.vmoptions para las aplicaciones que inicia. Esto requiere parchear el código, pero resultó ser muy útil.

0

en el directorio bin, hay un archivo setenv (.bat), puede establecer la memoria máxima/mínima allí.

5

(al menos) en karaf 2.2.10:

Si se ejecuta a través karaf bin/start

Como Ford Guo señaló, los valores de memoria puede ser configurado en el archivo 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 

Si ejecuta karaf como servicio (karaf-service)

En este caso, cualquier variable exportada parece ser ig nored

El tamaño máximo del montón Java podría definirse en el etc/karaf-wrapper.conf:

# Maximum Java Heap Size (in MB) 
wrapper.java.maxmemory=1024 
0

setenv no estaba cargado para mí (con la envoltura karaf), así que lo puse en el config envoltorio: (/opt/apache-servicemix-6.1.3/etc/karaf-wrapper.conf en mi caso)

# 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 

Comprobar antes de reanudar el juego:

# 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'; 
Cuestiones relacionadas