overflowToDisk如何在ehcache中运行?

时间:2012-05-25 07:23:07

标签: java caching ehcache

  

overflowToDisk:设置当内存存储达到maxInMemory限制时元素是否可以溢出到磁盘。

根据我的理解,如果memoryStoresSize没有达到maxElementsInMemory,它将不会写入磁盘。但似乎不是这样的。

我有一个简单的缓存如下:

<cache name="cache" maxEntriesLocalHeap="100000" eternal="true"  
 overflowToDisk="true" statistics = "true">
    <terracotta clustered="false"/>
</cache>

我从缓存中获取值时打印了统计信息。

System.out.println("memory size:" + cache.getMemoryStoreSize());
System.out.println("disk size:" + cache.getDiskStoreSize());

但输出显示磁盘大小不为0,即使内存大小远小于maxElementsInMemory。

memory size:2
disk size:186
memory size:2
disk size:186
memory size:3
disk size:186
memory size:3
disk size:186

即使内存大小也小于磁盘大小。怎么会发生这种情况?或者我如何配置它按预期工作?

感谢。

1 个答案:

答案 0 :(得分:1)

自2.6版以来,Ehcache已更改其存储模型 - 有关详细信息,请参阅this answer

你所看到的是完全正常的。

由于兼容性原因,尚未重命名旧版配置选项 - 尽管我同意该描述应该是。 请查看磁盘支持的缓存上的latest documentation,了解推荐的配置方法。