LruCache中sizeof的含义

Posted 一介闲休

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
执行最近最少使用策略进行数据清理



以上是关于LruCache中sizeof的含义的主要内容,如果未能解决你的问题,请参考以下文章

((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))的含义

t=(char*)malloc(n*sizeof(char))的含义?

Android 图片的缓存机制分析

LruCache详解之 Android 内存优化

Android lrucache 实现与使用(Android内存优化)

LruCache缓存