Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ehcache在逐出时不会从内存中删除元素 ehcache 2.5 timeToIdleSeconds=“1800”(30分钟),所以我希望元素在空闲30分钟后退出 上次使用元素30分钟后,我仍然可以看到缓存中充满了元素 强制GC并进行堆转储表明元素仍在内存中 getSize()返回正数,getKeys()按预期返回键(getKeys()不检查元素过期) 虽然获取特定元素会导致空值,这意味着它已过期 getKeysWithExpiryCheck()显示,缓存为空,所有元素都退出并逐出_Java_Ehcache - Fatal编程技术网

Java ehcache在逐出时不会从内存中删除元素 ehcache 2.5 timeToIdleSeconds=“1800”(30分钟),所以我希望元素在空闲30分钟后退出 上次使用元素30分钟后,我仍然可以看到缓存中充满了元素 强制GC并进行堆转储表明元素仍在内存中 getSize()返回正数,getKeys()按预期返回键(getKeys()不检查元素过期) 虽然获取特定元素会导致空值,这意味着它已过期 getKeysWithExpiryCheck()显示,缓存为空,所有元素都退出并逐出

Java ehcache在逐出时不会从内存中删除元素 ehcache 2.5 timeToIdleSeconds=“1800”(30分钟),所以我希望元素在空闲30分钟后退出 上次使用元素30分钟后,我仍然可以看到缓存中充满了元素 强制GC并进行堆转储表明元素仍在内存中 getSize()返回正数,getKeys()按预期返回键(getKeys()不检查元素过期) 虽然获取特定元素会导致空值,这意味着它已过期 getKeysWithExpiryCheck()显示,缓存为空,所有元素都退出并逐出,java,ehcache,Java,Ehcache,强制GC并进行堆转储表明,元素是从内存中收集的 maxEntriesLocalHeap="10000" eternal="false" statistics="true" overflowToDisk="false" timeToIdleSeconds="1800" memoryStoreEvictionPolicy="LFU" transactionalMode="off" 从上面我看到,ehcache给人的印象是元素过期了,这可能会导致我的代码逻辑刷新它们,但在我调用特定元素或getKe

强制GC并进行堆转储表明,元素是从内存中收集的

maxEntriesLocalHeap="10000"
eternal="false"
statistics="true"
overflowToDisk="false"
timeToIdleSeconds="1800"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off"
从上面我看到,ehcache给人的印象是元素过期了,这可能会导致我的代码逻辑刷新它们,但在我调用特定元素或getKeysWithExpiryCheck()之前,内存一直被元素污染,这不允许我使用ehcache作为有效的内存管理器

如何使元素在timeToIdleSeconds时间后成为GS?如果元素没有在timeToIdleSeconds以上使用,我希望内存被清理


Michael

Ehcache仅在放置元素且缓存高于阈值时才会逐出元素。否则,访问这些过期的元素将导致它们过期(并从缓存中删除)。没有线程在后台从缓存中收集和删除过期的元素。尽管我不建议这样做,因为这会影响缓存的性能(但如果内存使用更重要,这可能是一个公平的折衷方案),您可以让一个后台线程定期执行getKeysWithExpiryCheck()

另外,如果内存消耗是一个主要问题,那么您可能需要研究新的Ehcache 2.5,它允许您(甚至在CacheManager级别)指定最多应使用多少堆