Tôi đang viết một ứng dụng Swing phía máy khách (trình thiết kế phông chữ đồ họa) trên Java 5 . Gần đây, tôi java.lang.OutOfMemoryError: Java heap space
gặp lỗi vì tôi không thận trọng trong việc sử dụng bộ nhớ. Người dùng có thể mở số lượng tệp không giới hạn và chương trình sẽ giữ các đối tượng đã mở trong bộ nhớ. Sau khi nghiên cứu nhanh, tôi đã tìm thấy Công thái học trong Máy ảo Java 5.0 và những người khác nói rằng trên máy Windows, JVM mặc định kích thước heap tối đa là 64MB
.
Với tình huống này, tôi nên giải quyết hạn chế này như thế nào?
Tôi có thể tăng kích thước heap tối đa bằng cách sử dụng tùy chọn dòng lệnh cho java, nhưng điều đó sẽ yêu cầu tìm ra RAM có sẵn và viết một số chương trình hoặc tập lệnh khởi chạy. Bên cạnh đó, tăng đến một số max hữu hạn cuối cùng không thoát khỏi vấn đề.
Tôi có thể viết lại một số mã của mình để duy trì các đối tượng vào hệ thống tệp thường xuyên (sử dụng cơ sở dữ liệu là điều tương tự) để giải phóng bộ nhớ. Nó có thể hoạt động, nhưng có lẽ nó cũng rất nhiều công việc.
Nếu bạn có thể chỉ cho tôi chi tiết về các ý tưởng trên hoặc một số lựa chọn thay thế như bộ nhớ ảo tự động, mở rộng kích thước heap một cách linh hoạt , điều đó sẽ rất tuyệt.