强制GC并进行堆转储显示,这些元素从内存中收集.
maxEntriesLocalHeap="10000"
eternal="false"
statistics="true"
overflowToDisk="false"
timeToIdleSeconds="1800"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off"
Run Code Online (Sandbox Code Playgroud)从上面我看到,ehcache给人的印象是,元素过期可能导致我的代码逻辑刷新它们但在引擎盖下内存会被元素污染,直到我调用特定元素或getKeysWithExpiryCheck(),这不允许我使用ehcache作为有效的记忆管理者
如何在timeToIdleSeconds时间后将元素设为GS?如果在timeToIdleSeconds之上没有使用元素,我希望清理内存.
迈克尔
小智 20
Ehcache只会在放置元素并且缓存高于阈值时逐出元素.否则,访问这些过期元素将导致它们过期(并从缓存中删除).没有线程在后台从Cache中收集和删除过期的元素.即使我不推荐它,因为这会影响Cache的性能(但如果内存使用更重要,这可能是一个公平的权衡),你可以让一个后台线程定期执行getKeysWithExpiryCheck().
此外,如果内存消耗是一个主要问题,您可能需要查看新的Ehcache 2.5,它允许您(甚至在CacheManager级别)指定应该使用多少堆...
| 归档时间: |
|
| 查看次数: |
10372 次 |
| 最近记录: |