3

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

甚至内存大小也小于磁盘大小。这怎么可能发生?或者我该如何配置它以按预期工作?

谢谢。

4

1 回答 1

1

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

因此,您所看到的完全正常。

出于兼容性原因,未重命名旧配置选项 - 尽管我同意描述应该是。查看有关磁盘支持的缓存的最新文档以了解推荐的配置方式。

于 2014-11-07T08:45:23.510 回答