LruCache详解之 Android 内存优化算法
概念: LruCache 什么是LruCache? LruCache实现原理是什么?缓存
这两个问题其实能够做为一个问题来回答,知道了什么是 LruCache,就只然而然的知道 LruCache 的实现原理;Lru的全称是Least Recently Used ,近期最少使用的!因此咱们能够推断出 LruCache 的实现原理:把近期最少使用的数据从缓存中移除,保留使用最频繁的数据,那具体代码要怎么实现呢,咱们进入到源码中看看。
复制代码
咱们先看当作员变量有哪些:markdown
2)put方法优化
能够看到put()方法并无什么难点,重要的就是在添加过缓存对象后,调用trimToSize()方法,来判断缓存是否已满,若是满了就要删除近期最少使用的算法。spa
3) 获取缓存中的值3d
因而可知LruCache中维护了一个集合LinkedHashMap,该LinkedHashMap是以访问顺序排序的。当调用put()方法时,就会在结合中添加元素,并调用trimToSize()判断缓存是否已满,若是满了就用LinkedHashMap的迭代器删除队头元素,即近期最少访问的元素。当调用get()方法访问缓存对象时,就会调用LinkedHashMap的get()方法得到对应集合元素,同时会更新该元素到队尾。code
trimToSize()方法不断地删除LinkedHashMap中队头的元素,即近期最少访问的,直到缓存大小小于最大值。当调用LruCache的get()方法获取集合中的缓存对象时,就表明访问了一次该元素,将会更新队列,保持整个队列是按照访问顺序排序。这个更新过程就是在LinkedHashMap中的get()方法中完成的。orm