LruCache中sizeof的含義

對一些常用的數據,爲了重複去計算,有時候需要做緩存來提高應用性能。一般情況下我們通常會採用Map或SparseArray等鍵值對數據結構並結合SoftReference或WeakRefenerence來存儲,但對網絡圖片而言,我們常採用LruCache來做緩存(注,此結構也可以做一般數據的緩存),其基本原理就是基於最近最少使用策略來捨棄數據來避免緩存內存過大。具體使用可以參考LruCache機制解析。此文主要記錄下LruCache中Sizeof的使用,在使用Lrucache的時候,通常需要設置個MaxSize和覆蓋Sizeof方法,

maxSize的意思就是該緩存最大佔用多大的內存,如果存的東西超過這個內存塊,就採用最近最少使用策略來刪除部分緩存數據,直到緩存大小小於maxSize這個值;

Sizeof方法的作用只要是定義緩存中每項的大小,當我們緩存進去一個數據後,當前已緩存的Size就會根據這個方法將當前加進來的數據也加上,便於統計當前使用了多少內存,如果已使用的大小超過maxSize就會進行清除動作;用代碼表示如下:

curCacheItem = sizeof(key,value);
totalUsedSize += curCacheItem;
if(totalUsedSize > maxSize){
執行最近最少使用策略進行數據清理
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章