一、Ehcache淘汰机制

下面是Ehcache淘汰机制时序图:

Ehcache源码解析——缓存淘汰机制

Ehcache缓存淘汰时,主要做了下面几件事情:

  1. put操作结束后,判断是否超出了最大容量
  2. 从SelectableConcurrentHashMap中随机取出不超过30个元素作为淘汰样本
  3. 根据淘汰策略选出样本中需要被淘汰的元素
  4. 从SelectableConcurrentHashMap中移除该元素

可以看出,Ehcache缓存淘汰机制存在下面几个问题:

  1. 缓存淘汰不是基于全局的,而是基于样本的
  2. 缓存淘汰是在插入之后才进行的,所以在淘汰机制执行之前,缓存中的元素时超过限制的

二、Ehcache淘汰策略

Ehcache提供了3中缓存失效策略:

  1. LRU:最近最少未使用。默认策略
  2. LFU:最少被使用
  3. FIFO:先进先出

下面是缓存策略的类图:
Ehcache源码解析——缓存淘汰机制

三、Ehcache淘汰策略实现原理

相关文章: