基础系列 5:缓存(DiskLruCache)

Published: 11 May 2018 Category: 基础

LruCache原理


  • 把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除;
  • cache的某个值需要明确释放,重写entryRemoved();
  • 作为缓存,肯定有一个缓存的大小(自定义sizeOf())。当你访问了一个item(需要缓存的对象),这个item应该被加入到内存中,然后移动到一个队列的顶部,如此循环后这个队列的顶部应该是最近访问的item了,而队尾部就是很久没有访问的item,这样我们就应该对队尾部的item优先进行回收操作;
  • 用到了HashMap,那么就有这个数据存储对象的特点(KEY-VALUE),放入这个map的item应该会被强引用,要回收这个对象的时候是让这个key为空,这样就让有向图找不到对应的value,最终被GC

DiskLruCache原理


  1. Android DiskLruCache完全解析,硬盘缓存的最佳方案(郭霖) 1.1 https://blog.csdn.net/guolin_blog/article/details/28863651

参考链接:

  1. <>