2010-06-09 24 views
85

Tôi đang làm việc với tomcat 6.0, và trong khi tôi đang lập chỉ mục (không phải trong khi tôi đang bắt đầu tomcat), tôi có một lỗi không gian permgen.
Làm cách nào để tăng không gian đó ??Tăng không gian permgen

Cảm ơn

+0

tôi checkes câu hỏi tương tự trước đó, nhưng không giúp tôi. Đâu là -XX: NewSize = 2.125m? – Blanca

+0

có thể trùng lặp với lỗi [Xử lý "java.lang.OutOfMemoryError: PermGen space"] (http://stackoverflow.com/questions/88235/dealing-with-java-lang-outofmemoryerror-permgen-space-error) – Raedwald

Trả lời

139

Bạn có thể sử dụng:

-XX:MaxPermSize=128m 

để tăng không gian. Nhưng điều này thường chỉ trì hoãn việc không thể tránh khỏi.

Bạn cũng có thể kích hoạt PermGen để được thu gom rác

-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled 

Thông thường điều này xảy ra khi thực hiện rất nhiều redeploys. Tôi ngạc nhiên khi bạn có nó bằng cách sử dụng một cái gì đó như lập chỉ mục. Sử dụng virtualvm hoặc jconsole để theo dõi không gian gen Perm và kiểm tra mức độ tắt sau khi làm ấm chỉ mục.

Có thể bạn nên cân nhắc việc thay đổi sang một JVM khác như IBM JVM. Nó không có một thế hệ vĩnh viễn và được miễn dịch với vấn đề này.

+0

Cảm ơn !! Nhưng tôi phải viết nó ở đâu? Tôi đoán trong một cửa sổ ở đây: tomcat/conf Tôi có sai không ?? – Blanca

+1

Đối với tomcat, bạn có thể tạo một biến môi trường CATALINA_OPTS với giá trị các tùy chọn này được nối với nhau. Kịch bản khởi động sẽ thêm chúng vào dòng lệnh Java trước khi bắt đầu tomcat. Điều này không thể được thực hiện từ cấu hình tomcat vì JVM đã được cấu hình tại thời điểm đó. –

+0

Nếu đó là FreeBSD, hãy thêm các tùy chọn vào tập tin /etc/rc.conf. Đầu tiên hãy đọc tập lệnh bắt đầu tomcat để xem tham số chính xác mà nó sẽ tìm kiếm. –

11

Đối với tomcat bạn có thể tăng không gian permGem bằng cách sử dụng

-XX:MaxPermSize=128m 

Đối với điều này, bạn cần tạo (nếu chưa có) một file có tên setenv.sh trong tomcat/thư mục bin và bao gồm dòng sau trong nó

export JAVA_OPTS="-XX:MaxPermSize=128m" 

tham khảo: http://wiki.razuna.com/display/ecp/Adjusting+Memory+Settings+for+Tomcat

+1

'xuất JAVA_OPTS =" - XX: MaxPermSize = 128m "' làm việc cho tôi với Clojure + lein repl – Jeff

3

bạn cũng có thể tăng nó qua các đối số VM trong IDE của bạn. Trong trường hợp của tôi, tôi đang sử dụng Tomcat v7.0 đang chạy trên Eclipse. Để làm điều này, kích đúp vào máy chủ của bạn (Tomcat v7.0). Nhấp vào liên kết 'Mở cấu hình khởi chạy'. Chuyển đến tab 'Đối số'. Add -XX: MaxPermSize = 512m vào danh sách đối số VM. Nhấp vào 'Áp dụng' và sau đó 'OK'. Khởi động lại máy chủ của bạn.

2

nếu bạn phát hiện ra rằng các thiết lập bộ nhớ đã không được sử dụng và để thay đổi các thiết lập bộ nhớ, tôi đã sử dụng tomcat7w hoặc tomcat8w trong thư mục \ bin folder.Then sau nên bật lên:

tomcat monitor

Nhấp vào tab Java và thêm tomcat arguments.restart

+0

@ Jérémie B Tôi không có đủ điểm danh tiếng để thêm hình ảnh trực tiếp. –

0

On phân phối Debian như bạn thiết lập rằng trong /etc/default/tomcat[67]

Các vấn đề liên quan