2012-06-15 36 views
5

Tôi đang sử dụng ehcache 1.2.3. Vì kích thước bộ nhớ cache được chỉ định theo "phần tử", bộ nhớ có thể thay đổi rất nhiều (bộ đệm ehcache được sử dụng cùng với hibernate và cũng giữ bộ đệm truy vấn chuẩn nơi truy vấn trả về kết quả về kích thước có thể thay đổi). Câu hỏi của tôi là: điều gì sẽ xảy ra nếu JVM có ít bộ nhớ. Hiển thị của tôi từ đọc thay đổi của ehcache là ban đầu nó đang sử dụng tài liệu tham khảo mềm, nhưng kể từ khi java 1,4 được làm sạch chúng một cách thành công, các tham chiếu mềm cuối cùng đã bị loại bỏ. Do đó, nếu bộ nhớ cache quá lớn, tôi chỉ nhận được OutOfMemoryError? Không có gì trong Ehcache mà cố gắng ngăn chặn nó?Hành vi bộ nhớ Ehcache thấp

Trả lời

1

Bạn đúng trong đó nếu bạn muốn tạo OOM bằng ehcache, bạn có thể làm điều đó. Bạn đã có một cái nhìn tại các tùy chọn kích thước, mặc dù như maxEntriesLocalHeap/maxBytesLocalHeap. Sử dụng những người bạn có hiệu quả có thể ngăn chặn bộ nhớ cache để sử dụng nhiều hơn một số tiền được phân bổ của bộ nhớ.

Xem ví dụ http://ehcache.org/documentation/configuration/cache-size

+0

cảm ơn bạn, tôi thực sự có ấn tượng rằng trong các phiên bản gần đây của Ehcache có thể giới hạn rõ ràng mức tiêu thụ bộ nhớ. Nhưng câu hỏi của tôi là về Ehcache 1.2.3, vì đây là những gì được sử dụng trong hệ thống tôi đang làm việc. Và, một lần nữa, hiện tại ấn tượng của tôi (không được hỗ trợ bởi một thử nghiệm) là thực sự, nếu bộ nhớ cache quá lớn về mặt bộ nhớ được sử dụng (trái ngược với số phần tử được sử dụng), Ehcache 1.2.3 sẽ không cố gắng loại bỏ các mục giới hạn mức tiêu thụ bộ nhớ. –

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