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
即使内存大小也小于磁盘大小。怎么会发生这种情况?或者我如何配置它按预期工作?
感谢。
答案 0 :(得分:1)
自2.6版以来,Ehcache已更改其存储模型 - 有关详细信息,请参阅this answer。
你所看到的是完全正常的。
由于兼容性原因,尚未重命名旧版配置选项 - 尽管我同意该描述应该是。 请查看磁盘支持的缓存上的latest documentation,了解推荐的配置方法。