LruCache的原理,底层使用什么实现的

LRU全称为Least Recently Used,即最近最少使用。

LRU算法就是当缓存空间满了的时候,将最近最少使用的数据从缓存空间中删除以增加可用的缓存空间来缓存新数据。

这个算分的内部有一个缓存列表,每当一个缓存数据被访问的时候,这个数据就会被提到列表尾部,每次都这样的话,列表的头部数据就是最近最不常使用的了,当缓存空间不足时,就会删除列表头部的缓存数据。

LruCache 利用 LinkedHashMap 的一个特性(accessOrder=true 基于访问顺序)再加上对 LinkedHashMap 的数据操作上锁实现的缓存策略。

LruCache 的数据缓存是内存中的。


·  首先设置了内部LinkedHashMap构造参数 accessOrder=true, 实现了数据排序按照访问顺序。

·  LruCache类在调用get(K key) 方法时,都会调用LinkedHashMap.get(Object key) 。

·  如上述设置了accessOrder=true后,调用LinkedHashMap.get(Object key) 都会通过LinkedHashMap的afterNodeAccess()方法将数据移到队尾。

· 由于最新访问的数据在尾部,在put和 trimToSize 的方法执行下,如果发生数据移除,会优先移除掉头部数据

你可能感兴趣的:(LruCache的原理,底层使用什么实现的)