gpt4 book ai didi

java - ehcache memorystoresize 和 diskstoresize

转载 作者:行者123 更新时间:2023-11-30 11:57:30 24 4
gpt4 key购买 nike

[头像]2010-09-23 18:20:41 美国标准时间我的 ehcache 有以下配置。

<CacheManager dynamicConfig="true" monitoring="autodetect" name="CacheManager1" 
updateCheck="true"> <diskStore path="java.io.tmpdir" /> <defaultCache
clearOnFlush="true" copyOnRead="false" copyOnWrite="false" diskAccessStripes="1"
diskExpiryThreadIntervalSeconds="5" diskPersistent="true" diskSpoolBufferSizeMB="20"
eternal="true" logging="true" maxElementsInMemory="100" maxElementsOnDisk="100"
memoryStoreEvictionPolicy="LRU" name="cache1" overflowToDisk="true" statistics="true"
timeToIdleSeconds="0" timeToLiveSeconds="60" transactionalMode="off"> </defaultCache>
<cache clearOnFlush="true" copyOnRead="false" copyOnWrite="false" diskAccessStripes="1"
diskExpiryThreadIntervalSeconds="5" diskPersistent="true" diskSpoolBufferSizeMB="20"
eternal="true" logging="true" maxElementsInMemory="100" maxElementsOnDisk="100"
memoryStoreEvictionPolicy="LRU" name="cache1" overflowToDisk="true" statistics="true"
timeToIdleSeconds="0" timeToLiveSeconds="60" transactionalMode="off"> </cache>
</CacheManager>

maxElementsInMemoryStore 和 maxElementsOnDiskStore 设置为 100。我已将 150 个元素放入缓存中。当我查询 MemoryStoreSize 和 DiskStoreSize 时,我得到 138 和 15。我无法理解返回的大小。有人可以解释为什么会这样吗?

最佳答案

我找到了 MemoryStoreSize > maxElementsInMemory 的原因 here .当超过 MemoryStore 的大小时,进一步调用 put() 将导致额外的元素被推送到溢出(磁盘假脱机)队列,该队列使用工作线程异步刷新到磁盘.默认情况下,磁盘假脱机队列为 300MB,并且只有在满时(或者在关闭时,如果缓存是持久的)才会刷新。

获取 MemoryStoreSize 的调用返回 MemoryStore 和磁盘假脱机队列中元素的总和。

有些元素可能同时在队列中和磁盘上,这就解释了为什么两个数字之和不等于 150。

关于java - ehcache memorystoresize 和 diskstoresize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com