Skip to content

cache-eviction-demo

LRU / LFU 缓存淘汰可运行对照实验。

1. 实验目标

理解 LRU 与淘汰策略

入口类内容
LruLinkedHashMapDemoJDK LinkedHashMapaccessOrder + removeEldestEntry
SimpleLruCache手写 LRU:HashMap + 双向链表,moveToTail
SimpleLfuCache手写 LFU:频率桶 + 同频 LRU tie-break

2. 运行方式

bash
cd labs/foundations/cache-eviction-demo
javac -d out src/*.java

java -cp out LruLinkedHashMapDemo
java -cp out SimpleLruCache
java -cp out SimpleLfuCache

3. 源码

文件说明
LruLinkedHashMapDemo.javaLinkedHashMap 逐步演示(含 get D×5 + put F
SimpleLruCache.java手写 LRU,head 先淘汰 / tail 最近使用
SimpleLfuCache.java手写 LFU,与 LRU 对比频率语义

4. 预期要点

LRU:踢最久未访问;get D 多次不改变已在队尾的顺序;满员踢 head.next

LFU:踢频率最低;get A×3 后 A 更难被淘汰;满员踢 freq 最小的 C 而非 A