Đó là do tải lớp không đổi.
Mã cửa hàng lớp Java và tất cả các hằng số (ví dụ: hằng số chuỗi) trong heap vĩnh viễn không phải là rác được thu thập theo mặc định (có ý nghĩa trong đa số trường hợp vì các lớp chỉ được tải một lần trong suốt thời gian tồn tại của một ứng dụng).
Trong các ứng dụng mà thường tải các lớp trong toàn bộ cuộc đời đó là:
- web và máy chủ ứng dụng trong bố trí lại nóng;
- IDE khi chạy các ứng dụng đã phát triển (mỗi khi bạn nhấn nút Run trong Netbeans hoặc nhật thực nó sẽ tải các lớp ứng dụng của bạn lên một lớp mới);
- vv hành vi này không đúng vì một đống đầy đầy đủ.
Bạn cần phải bật bộ sưu tập thùng rác vĩnh viễn để ngăn chặn lỗi này.
tôi sử dụng tùy chọn
-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
(ngừng nhật thực của tôi 3,4 từ ném "java.lang.OutOfMemoryError: PermGen space
" vì vậy nó cũng sẽ làm việc với netbeans).
Sửa: Chỉ cần lưu ý rằng đối Netbeans bạn thiết lập những tùy chọn trong: [Netbeans installation]\etc\netbeans.conf
Bạn nên prefixe những tùy chọn với -J
và thêm chúng vào netbeans_default_options
(xem chú thích trong netbeans.conf
để biết thêm thông tin).
Nguồn
2009-03-23 15:11:17
cũng xem http://stackoverflow.com/questions/717550/java-lang-outofmemoryerror-java-heap-space-with-netbeans – Steen
Tại sao bạn không nâng cấp lên phiên bản NetBeans mới hơn? 6.5 thực sự là cũ. –
@a_horse_with_no_name: Như câu hỏi này. Tôi hỏi nó hơn ba năm trước. –