【发布时间】:2012-05-31 18:52:31
【问题描述】:
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
甚至内存大小也小于磁盘大小。这怎么可能发生?或者如何配置它以按预期工作?
谢谢。
【问题讨论】:
-
这可能在应用程序重新启动并且已经存在磁盘缓存后发生。
-
@Chandra 但缓存不是持久的......我清理了磁盘文件并重新启动了应用程序。结果还是一样..