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){
执行最近最少使用策略进行数据清理
}



你可能感兴趣的:(android,sizeof,LruCache)