基础:LRU缓存算法

一、前瞻

        在Android开发过程中用到缓存功能时,其内存、存储空间的大小一般都是有限的,当有新的元素插入进来并且使用的空间有限的时候,就需要淘汰旧的元素

二、LRU缓存        

        是一种缓存淘汰策略,全称 least recently used,意为最近最少使用

        主要思想:如果一个数据最近被访问,则将来它仍有可能被访问。在达到某个阈值时,淘汰掉最近没有访问的数据,从而保证缓存的数据量不会过大

三、实现方式

  1. 使用链表来实现
  2. 有新数据加入,插入链头
  3. 如果缓存中用到,将取走的数据移至链头
  4. 链表满时将链尾数据丢弃

四、LruCache  

图片缓存淘汰策略

  1. 通过构造函数来设置最大容量限制
  2. 通过 LinkedHashMap 来实现的数据的存放
  3. 通过get方法来读取缓存,通过 synchronized 对存在线程安全的代码块加了锁,保证了这里读取操作的线程安全
  4. 通过put方法写入缓存,将数据放入 Map 中,如果之前 key 的位置有数据则将当前 size 再减去原 size 从而计算出放入后的 size。
  5. 之后通过 trimToSize 方法进行空间重整,不断地在通过 remove 方法对 Map 中前面的元素进行删除,直到 size 小于 maxSize 为止,从而实现了空间的重整。

 五、DiskLruCache

在磁盘上实现 LRU 存储的开源库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值