LRUCache详解

LruCache详解之 Android 内存优化算法

概念: LruCache 什么是LruCache? LruCache实现原理是什么?缓存

这两个问题其实能够做为一个问题来回答,知道了什么是 LruCache,就只然而然的知道 LruCache 的实现原理;Lru的全称是Least Recently Used ,近期最少使用的!因此咱们能够推断出 LruCache 的实现原理:把近期最少使用的数据从缓存中移除,保留使用最频繁的数据,那具体代码要怎么实现呢,咱们进入到源码中看看。
复制代码

咱们先看当作员变量有哪些:markdown

image.png

image.png

  1. 重置最大缓存值

image.png

2)put方法优化

image.png 能够看到put()方法并无什么难点,重要的就是在添加过缓存对象后,调用trimToSize()方法,来判断缓存是否已满,若是满了就要删除近期最少使用的算法。spa

3) 获取缓存中的值3d

image.png

image.png

image.png

  1. LinkHashMap中的get方法

image.png

image.png 因而可知LruCache中维护了一个集合LinkedHashMap,该LinkedHashMap是以访问顺序排序的。当调用put()方法时,就会在结合中添加元素,并调用trimToSize()判断缓存是否已满,若是满了就用LinkedHashMap的迭代器删除队头元素,即近期最少访问的元素。当调用get()方法访问缓存对象时,就会调用LinkedHashMap的get()方法得到对应集合元素,同时会更新该元素到队尾。code

  1. 检查是否越界

image.png trimToSize()方法不断地删除LinkedHashMap中队头的元素,即近期最少访问的,直到缓存大小小于最大值。当调用LruCache的get()方法获取集合中的缓存对象时,就表明访问了一次该元素,将会更新队列,保持整个队列是按照访问顺序排序。这个更新过程就是在LinkedHashMap中的get()方法中完成的。orm

image.png

相关文章
相关标签/搜索