12

我对元素的“overflowToDisk”属性有一些疑问?

1)我在这个网址上读到:

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

上面的“内存”是指为运行 EHCACHE 的 Java 进程分配的 JVM 内存,或者是否有任何参数可以指定 Cache 内存大小?

2)当运行EHCACHE的poces由于某种原因终止时,是否该磁盘被清除并且缓存中的所有内容都消失了?

4

2 回答 2

12

当内存存储中的元素数量超过maxElementsInMemory时,元素开始溢出到磁盘。下面的示例创建一个缓存,在内存中存储 1000 个元素,如果需要存储更多,磁盘上最多可存储 10000 个:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>

对于第二个问题,看一下diskPersistent参数。如果设置为 true,Ehcache 将在您停止 JVM 时将您的数据保存在磁盘上。以下示例演示了这一点:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       diskPersistent="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>
于 2010-10-15T11:43:51.333 回答
5

从 Ehcache 2.6 开始,存储模型不再是溢出的,而是分层的。在分层存储模型中,所有数据将始终存在于最低层中。项目将根据它们的热度出现在更高的层中。

开源 Ehcache 的可能层是:

  • 在 JVM 堆上的堆上
  • 最低的磁盘上

根据定义,高层比低层具有较低的延迟,但容量较小。

因此,对于配置了 的开源缓存overflowToDisk,所有数据将始终位于磁盘层内。它将密钥存储在内存中,数据存储在磁盘上。

从另一个问题复制的答案。

于 2014-04-29T08:09:26.337 回答