簡體   English   中英

在Apache Karaf下設置Java堆大小

[英]Setting Java Heap Size under Apache Karaf

如果這是重復的話,我道歉,但我似乎無法在任何地方找到答案。

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

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

set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M

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

謝謝

(至少)在karaf 2.2.10中:

如果通過bin/start運行karaf

正如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

更新到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文件。

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

setenv為我加載(使用karaf包裝器),所以我把它放入包裝器配置/opt/apache-servicemix-6.1.3/etc/karaf-wrapper.conf在我的情況下/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';

這就是我在你的情況下會做的事情。

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

我喜歡使用webconsole所以我更改了它,因此它為它啟動的應用程序讀取了一個karaf.vmoptions文件。 這需要修補代碼,但結果證明是非常有用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM