【问题标题】:How overflowToDisk works in ehcache?overflowToDisk 在 ehcache 中是如何工作的?
【发布时间】: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 但缓存不是持久的......我清理了磁盘文件并重新启动了应用程序。结果还是一样..

标签: java caching ehcache


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多