1

我在将它与 Hibernate 2nd Level 缓存一起使用时收到 Eh-cache 日志记录输出 - 我不了解输出及其可能意味着什么。它被大量打印到日志中。

 DEBUG [net.sf.ehcache.store.disk.Segment] put added 0 on heap
 DEBUG [net.sf.ehcache.store.disk.Segment] put updated, deleted 0 on heap

谁能阐明这可能意味着什么?根据统计数据的打印,我的二级缓存似乎正在工作......

INFO [com.atlaschase.falcon.commands.domain.AircraftCommandResolutionService] [  name = aircraftCache cacheHits = 824 onDiskHits = 0 offHeapHits = 0 inMemoryHits = 824 misses = 182 onDiskMisses = 182 offHeapMisses = 0 inMemoryMisses = 182 size = 91 averageGetTime = 1.0745527 evictionCount = 0 ]

任何帮助,将不胜感激 ..

西蒙

4

1 回答 1

2

此输出由DiskStore生成,在 EhCache 中默认启用 IIRC。基本上,EhCache 会将缓存的数据从内存溢出到磁盘。如果要禁用此功能,请将overflowToDisk属性设置为flase

<cache name="..." overflowToDisk="false"

哦 - 有人还可以确认“averageGetTime”以毫秒而不是秒为单位吗?

确认,毫秒。虽然JavaDocStatistics.getAverageGetTime()有点令人困惑

[...] 因为 ehcache 支持 JDK1.4.2,所以每次获取时间都使用 System.currentTimeMilis,而不是纳秒。因此准确性受到限制。

我在以下代码中找到了LiveCacheStatisticsImpl

public float getAverageGetTimeMillis() {
    //...
    return (float) totalGetTimeTakenMillis.get() / hitCount;
}
于 2012-04-11T16:29:37.083 回答