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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值