Ehcache記憶體元素的管理

2021-08-27 01:12:36 字數 1060 閱讀 5076

cache配置項

maxelementsinmemory : 允許記憶體中最大的元素個數

overflowtodisk : 當元素的數量超過maxelementsinmemory的值時,是否允許儲存到磁碟

diskpersistent : 是否允許資料持久化到記憶體,如果是,即jvm重啟快取中的資料仍然有效,該設定影響效能,大概減低8倍效能

diskexpirythreadintervalseconds : 磁碟中資料過期檢查執行緒的輪詢時間間隔

memorystoreevictionpolicy : 記憶體中資料元素的管理策略,當元素的數量超過maxelementsinmemory的值時,將觸發該策略把記憶體中的元素移出,有:lfu:最近最少使用的元素 先移出;fifo:最先進入的元素被移出;lru:使用越少的元素被移出

eternal : true時表示快取中的資料永遠不會過期;false時表示快取中的資料會過期,過期的依據需要根據timetoidleseconds 和 timetoliveseconds 的值

timetoidleseconds : 允許快取中資料的最大空閒時間,即cache.get(key)最近一次被呼叫離現在的時間間隔如果大於該時間,即該元素會被過期expiry

timetoliveseconds : 允許快取中資料的最大生存時間,0時表示無限大。cache.put(element)到現在的時間間隔如果大於該時間,即該元素被過期expiry

元素在快取中被過期expiry,只需滿足上面timetoidleseconds和timetoliveseconds任何乙個條件即可

注意的是觸發ehcache去檢查這個元素是否過期expiry,是由使用者訪問了元素,即呼叫cache.get(key)按需觸發,這時ehcache才會去檢查這個元素是否過期,如果過期就把該元素清除,並返回null。所以如果存在這樣的場景:有些元素我們一直都不去訪問,且記憶體中的元素數量又沒超出maxelementsinmemory的值,那麼這些過期元素將一直駐留在記憶體中。

為了解決這個問題,我們應該建立乙個後台執行緒,這個執行緒可以過一段時間去觸發一下cache.evictexpiredelements(),這樣即可把記憶體中駐留的過期元素清除。

ehcache的配置使用

updatecheck 是否檢測更新,如果設定為true,它會到www.terracotta.org檢測是否有新的包 monitoring determines whether the cachemanager should automatically register the sampledcac...

關於EhCache的使用

對於ehcache,其實並不陌生,hibernate的預設二級快取實現的是ehcache,下面談談ehcache的配置方法以及一般的使用 ehcache的預設配置檔案是ehcache.xml,只要將該檔案放置在classpath下,就可以呼叫,下面兩種方法是通過其他路徑或名稱呼叫配置檔案。一 通過c...

記憶體管理 記憶體管理概述

儲存器的發展方向是高速 大容量和小體積,即儲存器嘗試更高讀寫速度,更大儲存容量,更小物理體積。在計算機中,常見的儲存器有 暫存器,快取,記憶體,硬碟,一般硬碟之類的輔助儲存器又稱外存。在平均讀寫速度上,有 暫存器 快取 記憶體 外存 在單位容量 上,有 外存 記憶體 快取 暫存器 cpu處理器只能直...