2011-09-08 32 views
7

Tôi xin lỗi nếu đây là bản sao, nhưng tôi dường như không thể tìm thấy câu trả lời này ở bất kỳ đâu.Đặt Kích thước Heap Java dưới Apache Karaf

Cách tốt nhất để tăng kích thước heap Java tối đa khi sử dụng Apache Karaf là gì?

Hiện nay, tôi biến đổi dòng sau trong file karaf.bat:

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

Tôi cảm thấy việc sửa đổi tệp dơi không phải là giải pháp tốt nhất. Ngoài ra, không có tệp cấu hình nào dường như có chỗ để đặt.

Cảm ơn

Trả lời

7

Cập nhật lên Karaf 2.2.3 cho thấy tệp bat mới.

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 
) 

Điều này có nghĩa là bạn chỉ có thể tạo biến hệ thống thay vì sửa đổi tệp dơi.

0

Điều tôi sẽ làm trong trường hợp của bạn.

Tôi đã thấy mọi người đề xuất sử dụng dịch vụ bắt đầu cho phép bạn xác định các đối số dòng lệnh.

Tôi thích sử dụng webconsole vì vậy tôi đã thay đổi nó để đọc một tập tin karaf.vmoptions cho các ứng dụng nó bắt đầu. Điều này đòi hỏi phải vá mã, nhưng hóa ra lại rất hữu ích.

0

trong thư mục bin, có tệp setenv (.bat), bạn có thể đặt tối đa/phút mem trong đó.

5

(Ít nhất) trong karaf 2.2.10:

Nếu chạy karaf qua bin/start

Như Ford Guo chỉ ra, giá trị bộ nhớ có thể được cấu hình trong bin/setenv file:

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 

Nếu chạy karaf như một dịch vụ (karaf-service)

Trong trường hợp này, bất kỳ biến xuất khẩu nào cũng có vẻ là ig nored.

tối đa kích thước java đống có thể được xác định trong etc/karaf-wrapper.conf:

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

setenv wasnt nạp cho tôi (bằng cách sử dụng wrapper karaf), vì vậy tôi đặt nó vào cấu hình wrapper: (/opt/apache-servicemix-6.1.3/etc/karaf-wrapper.conf trong trường hợp của tôi)

# 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 

Kiểm tra trước khi khởi động lại:

# 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'; 
Các vấn đề liên quan