2012-07-05 37 views
60

Tôi có máy ảo này với tomcat, java và grails trong đó. Tôi đã nhận được lỗi permgen vì vậy tôi nhìn xung quanh và tìm thấy giải pháp:Làm cách nào để đặt đúng kích thước permgen?

set JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" 

Tôi sử dụng SSH để truy cập vm và nhập các đối số ở trên. Tôi cho rằng điều đó sẽ khắc phục được vấn đề. Thing là, tôi muốn chắc chắn rằng tôi đã làm nó một cách chính xác. Vì vậy, tôi tìm kiếm một lần nữa về cách tôi có thể kiểm tra permSize hiện tại và đây là giải pháp tôi nhận được:

jinfo -flag MaxPermSize 6444 

6444 là pid, và như một phản ứng, tôi nhận được điều này.

-XX:MaxPermSize=85983232 

Câu hỏi: Giá trị của maxPermSize tính bằng byte? bởi vì, nếu có, thì điều đó có nghĩa là lệnh java_opts không hoạt động. Tôi đang mong đợi để có được 512m nhưng 85983232 byte = 82 mb .. Hoặc tôi thấy nó sai ..? Ai có thể khai sáng cho tôi về điều này? D:

+0

Tôi giả sử bạn khởi động lại quá trình tomcat? Với ps -wwf 6444 bạn có thể thấy lệnh đầy đủ đã bắt đầu quá trình. Kiểm tra xem các tùy chọn của bạn có được bao gồm không. Bạn cũng có thể bắt đầu jconsole (có trong jdk) và kết nối với tiến trình, sau đó kiểm tra tab General info và thẻ Memory. – greyfairer

+0

Tôi chưa khởi động lại tomcat. Tôi nghĩ rằng tôi đã quên quá trình đó .. D: Xin lỗi tôi là người mới đến điều triển khai này .. Nhưng tôi đoán là một nhà phát triển tôi nên biết loại công cụ này .. Cảm ơn. :) –

Trả lời

74

Bạn cần phải thay đổi các giá trị trong CATALINA_OPTS tùy chọn định nghĩa trong Tomcat Catalina bắt đầu tập tin. Để tăng bộ nhớ PermGen thay đổi giá trị của biến số MaxPermSize, nếu không thay đổi giá trị của biến số Xmx.

Linux & Mac OS: Mở hoặc tạo setenv.sh tệp được đặt trong thư mục "bin". Bạn cần phải áp dụng những thay đổi dòng này:

export CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" 

Windows:

Mở hoặc tạo ra các tập tin setenv.bat đặt trong thư mục "bin":

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 
+51

Trên thực tế, cách tư vấn thiết lập này là bằng cách tạo một setenv.bat (Windows) hoặc setenv.sh (* nix) và đặt các mục trong đó, Tomcat sẽ chọn những thứ này và dễ dàng hơn để quản lý nâng cấp – Steve

+0

Có rất nhiều câu trả lời tương tự như vậy nhưng tôi thấy rằng đây là cách rõ ràng và đơn giản nhất, rất hữu ích. – Jeremy

+1

Tại sao thay đổi Xmx tăng PermGen? – amdev

1

Vì vậy, bạn đang làm điều đúng liên quan đến "-XX: MaxPermSize = 512m": đó thực sự là cú pháp chính xác. Bạn có thể thử đặt các tùy chọn này trực tiếp vào các tệp máy chủ Catalyna để chúng được sử dụng khi khởi động máy chủ.

Có thể bài đăng này sẽ giúp bạn!

How to make sure that Tomcat6 reads CATALINA_OPTS on Windows?

+0

Tôi đang sử dụng Linux. Nhưng tôi sẽ đọc nó và xem nó hoạt động ra sao. Cám ơn rất nhiều vì đã hồi âm. : 3 –

21

Đừng đặt cấu hình môi trường trong catalina.bat/catalina.sh. Thay vào đó, bạn nên tạo một tệp mới trong CATALINA_BASE \ bin \ setenv.bat để giữ cho các tùy chỉnh của bạn tách biệt với cài đặt tomcat.

+0

Tôi đã gửi bản chỉnh sửa để thêm câu trả lời này vào câu trả lời được chấp nhận. –

0

hoàn toàn ra khỏi java 8 +
một phần ra khỏi java 7 (thực tập nội trú Strings ví dụ)
source

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