7

我正在查看 EhCache 统计信息,我看到了这些数字:

缓存未命中:75977 缓存
命中:38151

InMemoryCacheMisses:4843
InMemoryCacheHits:38151

“内存”是唯一的存储——没有堆外存储,也没有磁盘存储(overflowToDisk="false", diskPersistent="false")。那么这两个是什么意思呢?我希望它们是相同的(命中相同),但未命中差异很大。

4

2 回答 2

1

你的缓存中有一些null-valued吗?Element(Ehcache 允许您将Elements 与null值一起存储,但我不确定是否有任何限制)。

查看 2.5.3 版本中Cache.searchInStoreWithStats(Object key)的代码,似乎那里有一个错误:

  • 确定是否增加的测试inMemoryMisses使用containsKey()导数,
  • 而针对导数结果增加cacheMisses空值检查的测试get()

因此,每次您搜索存在于 中InMemoryStore但具有null值的键时,它将递增cacheMisses但不递增inMemoryMisses

所以,我可能完全不在了,但我闻起来很香。你怎么看?

编辑:我意识到我的解释是错误的——元素不能为空,(但它的“值”可以为空)。无论如何我都会在这里留下这个答案,以防它触发任何其他想法

于 2012-08-15T09:01:14.873 回答
0

我相信您正在使用 ehcache 2.5+ 。如果您有磁盘持久性为 true 的缓存配置(尽管 overflowtodisk 为 false),它会写入磁盘。所以也可能有磁盘吗?您可以在统计中查看它们。你有diskpersistance是真的吗?请发布您的缓存配置

于 2012-08-10T10:44:41.863 回答