Ehcache内存元素的管理
来源:互联网 发布:淘宝卖刀的店铺 编辑:程序博客网 时间:2024/05/16 20:28
Cache配置项
maxElementsInMemory : 允许内存中最大的元素个数
overflowToDisk : 当元素的数量超过maxElementsInMemory的值时,是否允许存储到磁盘
diskPersistent : 是否允许数据持久化到内存,如果是,即JVM重启缓存中的数据仍然有效,该设置影响性能,大概减低8倍性能
diskExpiryThreadIntervalSeconds : 磁盘中数据过期检查线程的轮询时间间隔
memoryStoreEvictionPolicy : 内存中数据元素的管理策略,当元素的数量超过maxElementsInMemory的值时,将触发该策略把内存中的元素移出,有:LFU:最近最少使用的元素 先移出;FIFO:最先进入的元素被移出;LRU:使用越少的元素被移出
eternal : true时表示缓存中的数据永远不会过期;false时表示缓存中的数据会过期,过期的依据需要根据timeToIdleSeconds 和 timeToLiveSeconds 的值
timeToIdleSeconds : 允许缓存中数据的最大空闲时间,即cache.get(key)最近一次被调用离现在的时间间隔如果大于该时间,即该元素会被过期expiry
timeToLiveSeconds : 允许缓存中数据的最大生存时间,0时表示无限大。cache.put(element)到现在的时间间隔如果大于该时间,即该元素被过期expiry
元素在缓存中被过期expiry,只需满足上面timeToIdleSeconds和timeToLiveSeconds任何一个条件即可
注意的是触发ehcache去检查这个元素是否过期expiry,是由用户访问了元素,即调用cache.get(key)按需触发,这时ehcache才会去检查这个元素是否过期,如果过期就把该元素清除,并返回null。所以如果存在这样的场景:有些元素我们一直都不去访问,且内存中的元素数量又没超出maxElementsInMemory的值,那么这些过期元素将一直驻留在内存中。
为了解决这个问题,我们应该创建一个后台线程,这个线程可以过一段时间去触发一下cache.evictExpiredElements(),这样即可把内存中驻留的过期元素清除。
- Ehcache内存元素的管理
- 内存管理元素
- Ehcache管理缓存与Spring的整合
- ehcache 内存泄漏
- DWZ+springMvc+hibernate+ehcache+websocket 简易的后台管理+即时通讯
- 内存管理--内存的简介
- 得到元素的内存地址
- 内存管理的读书笔记
- GTKMM的内存管理
- uClinux的内存管理
- Symbian的内存管理
- IOCP的内存管理
- C++ 的内存管理
- physX 的内存管理
- COM的内存管理
- matlab的内存管理
- winCE的内存管理
- Qt的内存管理
- Android自动化测试工具
- 直方图理解
- andriod imageview 简易边框
- checkStyle 文档整理
- sys_sync简介
- Ehcache内存元素的管理
- 各种 ID 区分
- reportviewer.printdialog 打印窗口返回值问题
- Struts2 类型转换
- 机器学习相关——文本分类综述
- Android读写文件!!!!
- Qt编程核心技术
- PhoneGap NFC plugin支持BlackBerry, Android
- MsSql 数据类型