2012-06-15 62 views
5

我正在使用ehcache 1.2.3。由於高速緩存大小是按「元素」來規定的,因此高速緩存佔用的內存可能差別很大(ehcache與hibernate一起使用,並且還具有標準查詢高速緩存,其中查詢返回大小可能不同的結果集 )。我的問題是:如果JVM內存不足,會發生什麼情況。通過閱讀ehcache更新日誌,我的印象是最初它使用軟引用 ,但由於java 1.4正在清理它們,所以軟引用 最終被刪除。因此,如果緩存變得太大,我只會得到 OutOfMemoryError?試圖阻止它的Ehcache中沒有?Ehcache低內存行爲

回答

1

你是對的,如果你想用ehcache創建一個OOM,你可以這樣做。你有看看大小選項,但像maxEntriesLocalHeap/maxBytesLocalHeap。使用這些可以有效防止緩存使用超過分配的內存量。

見例如http://ehcache.org/documentation/configuration/cache-size

+0

謝謝你,我的確有這樣的印象,在最新版本的Ehcache一個可以明確地限制了內存消耗。但我的問題是關於Ehcache 1.2.3,因爲這是我正在使用的系統中使用的。而且,再次,目前我的印象(沒有得到實驗的支持)確實是,如果緩存在使用內存方面太大(與使用的元素數量相反),Ehcache 1.2.3不會嘗試將條目驅逐到限制內存消耗。 –