Hiện tại, chúng tôi có một sản phẩm chạy trên phiên bản 1.6 JRE 32 bit. Chúng tôi đang sử dụng Berkeley DB mà tiêu thụ khoảng 2,5 GB RAM của không gian địa chỉ 4 GB. Điều đó khiến chúng ta có khoảng 750 MB bộ nhớ cho không gian địa chỉ JVM.java: Cách sử dụng bộ nhớ vượt quá 4 GB trong 32 bit JVM
Hiện chúng tôi đang gặp sự cố OutOfMemory với thiết lập hiện tại. Nó sẽ là tốt đẹp để tăng kích thước heap JVM của chúng tôi lên 1,5 GB trong khi vẫn giữ lại không gian 2,5 GB Berkeley DB. Có cách nào để truy cập hơn 4 GB RAM/heap trong một JVM 32 bit không? Tôi đã xem xét các giải pháp sau đây
1) sử dụng JVM làm GC tốt hơn - điều này sẽ cho tôi kết quả cận biên - tôi có thể nhận được khoảng 50-100 MB bộ nhớ hoạt động
2) một cái gì đó như memcached hoặc "quá trình ehcache "- điều này có thể giúp tôi nhiều như phần cứng cho phép với phí trên của IPC/serialization.
Có giải pháp nào khác để tăng bộ nhớ địa chỉ của ứng dụng không?
Giải pháp nên hoạt động trên sparc solaris 10 chạy.
* UPDATE: Bởi vì của việc sử dụng các thư viện chia sẻ bản xứ, ngay bây giờ, chúng tôi không thể chuyển sang một JVM 64-bit mặc dù hệ điều hành là 64-bit *
cảm ơn bạn,
Hệ điều hành là 64 bit mặt trời với nhiều RAM GB. Nó chỉ là quá trình java cần nhiều RAM/heap hơn. – anjanb
anjanb, bạn có thể nói phiên bản chính xác của BerkeleyDB không? Làm thế nào rất nhiều bộ nhớ đã được dành riêng cho BerkeleyDB? – osgx