【发布时间】:2014-03-23 03:35:19
【问题描述】:
我将 Ehcache 配置为下一个:
<cache name="test-cache"
maxEntriesLocalHeap="50"
maxEntriesLocalDisk="50"
eternal="false"
diskSpoolBufferSizeMB="10"
timeToIdleSeconds="90"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap"/>
</cache>
以及使用它的以下代码:
Ehcache cache = CacheManager.getInstance().getCache("test-cache");
cache.setStatisticsEnabled(true);
cache.setStatisticsAccuracy(Statistics.STATISTICS_ACCURACY_GUARANTEED);
/* put 100 elements */
for (int i = 1; i <= 100; i++) {
cache.put(new Element("key-"+i, "value-"+i));
}
/* hit 100 elements in cache 10000 times */
for (int i = 1; i <= 100; i++) {
for (int j = 1; j <= 100 ; j++) {
cache.get("key-"+j);
}
}
/* consider values of misses, onDiskMisses, inMemoryMisses */
System.out.println("Statistics = " + cache.getStatistics().toString());
我准备了简单的一类演示,你可以运行https://github.com/Bezuhlyi/ehcahce-statistics-test
您可以看到,misses != inMemoryMisses + offHeapMisses + onDiskMisses。
问题是Statistics.getCacheMisses() 到底是什么?
此外,自然缓存命中率 = hits / (hits + misses)。那么了解 Ehcache 实例的实际命中率的正确方法是什么?
我在文档中没有发现任何有用的信息,以及关于 SampledCacheStatistics 的用途。
【问题讨论】:
标签: java caching ehcache terracotta