一 什么是LRU
全称Least Recently Used ,当数据所占内存达到一定阈值,我们要移除掉最近最少使用的数据。
二 实现LRU
1.通过LinkedHashMap来实现
为了实现缓存回收,我们需要做到以下两点:
- 查询出最近最晚使用的项
- 给最近使用的项做一个标记
JAVA中实现LRU最简单的方法是利用LinkedHashMap,其中的核心是重写removeEldestEntry(Map.Entry)方法。
为什么使用LinkedHashMap呢?
GET方法:
public V get(Object key) {
Node<K,V> e;
if ((e = getNode(hash(key), key)) == null)
return null;
if (accessOrder)
afterNodeAccess(e);
return e.value;
}
当accessOrder是true的时候,afterNodeAccess(e)都要将元素移动到尾部,所以要保证access是true
我们再看LinkedHashMap的构造函数:
public LinkedHashMap(int initialCapacity,