ehcache - 故障记录不会定期被驱逐?

时间:2015-10-20 19:04:17

标签: java caching ehcache

我们正在使用ehcache 2.10.1并具有以下配置(通过MBeans报告):

MBean output

我们实际上通过以下方式设置存储空间大小:

  

cacheManagerConfig.setMaxBytesLocalDisk(1024 * 1024 * 1024);   cacheManagerConfig.setMaxBytesLocalHeap(1024 * 1024 * 1024);

我们意识到并非所有元素都从缓存中逐出(通过diskExpiryThread或手动调用cache.evictExpiredElements()),但我们非常依赖缓存逐出侦听器来执行一些清理任务。然而,驱逐发生在“获取”上。

我们在日志中进一步了解

  

DEBUG net.sf.ehcache.store.disk.Segment - 故障从堆中删除-208

     

DEBUG net.sf.ehcache.store.disk.Segment - 故障在磁盘上添加了293

在evict()的Segment.java中,我看到了一段代码:

 if (e != null && !e.faulted.get()) {
     evictedElement = decode(e.element);
 }

由于元素出现故障evictedElement保持为空并且不会发生驱逐。

查看驱逐的源代码,我看到TODO告诉代码应该被重写或清理。

现在我很好奇它是否是某种错误,或者我们错误地设置了缓存?

由于

UPD :从用户的角度来看,我很好奇为什么在调用CacheEventListenerAdapter时没有调用cache.evictExpiredElements()的方法

0 个答案:

没有答案