guava-cache       

Guava-cache

LRU实现

在Guava Cache的LRU实现中,它的双向链表并不是全局的(即这个那个Guava Cache只有一个)。而是每个Segment(ConcurrentHashMap中的概念)中都有。其中一共涉及到三个Queue其中包括:AccessQueue和WriteQueue,以及RecentQueue。其中AccessQueue和WriteQueue就是双向链表;而RecentQueue才是真正的Queue,它就是CocurrentLinkedQueue。接下来我们将分析Guava Cache是如何通过这三个Queue来实现的LRU。

没加锁的情况下(读),访问元素,加入cocurrentLinkedQueue,然后在加锁情况下(修改),将cocurrentLinkedQueue的数据放入accessQueue

删除策略

参考

http://kapsterio.github.io/test/2019/03/04/guava-loading-cache.html

https://blog.csdn.net/hilaryfrank/article/details/105739723