小编use*_*055的帖子

在驱逐时,ehcache不会从内存中删除Element

  1. ehcache 2.5
  2. timeToIdleSeconds ="1800"(30分钟),所以我希望元素在闲置30分钟后逐出
  3. 在最后一个Element使用后30分钟,我仍然可以看到缓存中充满了元素
  4. 强制GC并进行堆转储显示,该元素仍在内存中
  5. getSize()返回正数,getKeys()按预期返回键(getKeys()不检查元素到期)
  6. 获取特定元素,虽然结果为NULL值,意味着它已过期.
  7. getKeysWithExpiryCheck()显示,该缓存为空,所有元素都已被放逐并被驱逐
  8. 强制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之上没有使用元素,我希望清理内存.

迈克尔

java ehcache

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

ehcache ×1

java ×1