ehcache LRU驱逐最近使用的条目

时间:2010-02-22 12:34:04

标签: java ehcache

使用Ehcache ,在Java应用程序工作2.5天后,我有了这个统计信息

cacheHits:  31185262, approximate 131 per sec
cacheMisses:    4642979, approximate 19  per sec
evictedCount:   4106931, approximate 17 per sec

和最后一小时看起来像是

cacheHits:  60 per sec
cacheMisses:    57 per sec
evictedCount:   53 per sec

缓存大小= 400000,项目永不过期。

为什么会这样?

2 个答案:

答案 0 :(得分:4)

我想我找到了原因。

前段时间我将ehcache从1.6.xx升级到1.7.xx.我没有注意到他们改变了驱逐算法的实现。现在它的工作原理如下:选择随机的15个键(!,它们使用一些启发式算法,但它仍然是随机的),然后找到相应的元素,从选定的元素中选择最近最近使用的元素。 (你可以在看MemoryStore课后自己弄清楚)。之后,这并不奇怪,它的工作非常糟糕。

好消息是你可以通过设置属性“net.sf.ehcache.use.classic.lru”= true来使用旧的实现。在我这样做后,我的问题消失了

答案 1 :(得分:1)

您可以查看其他Cache Eviction Algorithms。另请参阅Cache replacement policies