一 什么是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,
float loadFactor,

LRU(Least Recently Used)是一种常用的页面替换算法,当内存达到阈值时,会淘汰最近最少使用的数据。在Java中,可以通过LinkedHashMap来实现LRU缓存,通过重写removeEldestEntry方法来达到缓存回收的目的,保证最近访问的元素位于链表尾部。
最低0.47元/天 解锁文章
6650

被折叠的 条评论
为什么被折叠?



