LRU
是什么?
LRU
是 Least Recently Used
最近最少使用。LRUCache
是最近最少使用缓存机制,即会优先淘汰近期最少使用的缓存对象。
LRUCache
的实现原理。
LRUCache
内部使用了LinkedHashMap
来实现的。如果对LinkedHashMap
不熟悉可以看这篇文章
LinkedHashMap解析。
通过LinkedHashMap
accessOrder 实现最近最少使用的实现。
LinkedHashmap 构造方法有一个
public LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder)
三个参数分别是initialCapacity
初始容量、loadFactor
负载系数、accessOrder
访问顺序。如果为true
Linked 为访问顺序,false
为插入顺序。LRUCache
使用了这个构造方法,并且accessOrder
为true。 每次会把访问的节点放到队尾。
LRUCache
的具体实现
通过重写 removeEldestEntry
方法和通过缓存大小计算初始容量来实现
1 | public LRUCache(int cacheSize) { |
LRUCache
总结
LRUCache
通过LinkedHashMap
的accessOrder
(访问顺序) 来实现LRU
缓存机制。