我很抱歉如果這是重複的,但我似乎無法找到任何答案。在Apache Karaf上設置Java堆大小
當使用Apache Karaf時,增加最大Java堆大小的最佳方法是什麼?
目前,我修改了karaf.bat文件以下行:
set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M
。
我覺得修改bat文件並不是最好的解決方案。此外,沒有一個配置文件似乎有一個地方可以把這個。
謝謝
我很抱歉如果這是重複的,但我似乎無法找到任何答案。在Apache Karaf上設置Java堆大小
當使用Apache Karaf時,增加最大Java堆大小的最佳方法是什麼?
目前,我修改了karaf.bat文件以下行:
set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M
。
我覺得修改bat文件並不是最好的解決方案。此外,沒有一個配置文件似乎有一個地方可以把這個。
謝謝
更新到卡拉夫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文件。
這就是我會做你的情況。
我見過人們建議使用服務啓動,它允許您定義命令行參數。
我喜歡使用webconsole,所以我改變了它,所以它爲它啓動的應用程序讀取karaf.vmoptions文件。這需要修補代碼,但事實證明它非常有用。
在bin目錄中,有一個setenv(.bat)文件, 您可以在其中設置max/min mem。
(至少)在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-service
)在這種情況下,任何導出的變量似乎都是ig接異。
最大Java堆大小可在etc/karaf-wrapper.conf
定義:
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024
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';