天天看點

快速建構大資料緩存

場景:

         系統運作于正式環境後,發現時常發生OOM (OutOfMemory),通過 Windbg dump 了幾個記憶體後發現很多緩存對象無法回收【分析過程另起新篇叙述】,于是想到如何處理緩存?

方案:

         由于系統中的緩存都是采用 Hashtable 直接建立 key, value 來緩存對象,屬于 Strong Handle類型,當然第一反應就是建立 WeakReference ,是以就按照此思路重新建構了一下啊緩存

思路:

緩存基類 BigCacheItem 以 WeakReference 為基礎,其他類都是實作各自不同場景下的緩存

類名

用途

BigFastCacheItem

大資料快速緩存,減少建立對象時等待時間

FSCacheItem

檔案緩存,大對象無法緩存在記憶體中時,可以先以檔案緩存,需要時,再重新取回資料

LightCacheItem

輕量級緩存:對象可以很容易的建立時,建議采用此類

思想講玩了,直接看代碼吧。

【說明】: 代碼中很多注釋用 GhostDoc 自動生成,沒有進行校驗,不能保證其準确性

源碼下載下傳:

完整檔案下載下傳:

繼續閱讀