2011-09-08 127 views
7

我很抱歉如果這是重複的,但我似乎無法找到任何答案。在Apache Karaf上設置Java堆大小

當使用Apache Karaf時,增加最大Java堆大小的最佳方法是什麼?

目前,我修改了karaf.bat文件以下行:

set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M

我覺得修改bat文件並不是最好的解決方案。此外,沒有一個配置文件似乎有一個地方可以把這個。

謝謝

回答

7

更新到卡拉夫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

這就是我會做你的情況。

我見過人們建議使用服務啓動,它允許您定義命令行參數。

我喜歡使用webconsole,所以我改變了它,所以它爲它啓動的應用程序讀取karaf.vmoptions文件。這需要修補代碼,但事實證明它非常有用。

0

在bin目錄中,有一個setenv(.bat)文件, 您可以在其中設置max/min mem。

5

(至少)在karaf 2.2.10:

如果通過bin/start

作爲福特過指出運行karaf,存儲器值可以在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

在這種情況下,任何導出的變量似乎都是ig接異。

最大Java堆大小可在etc/karaf-wrapper.conf定義:

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

setenv wasnt加載對我來說(使用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';