缓存进行曲之java缓存

Posted watchdogzhb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存进行曲之java缓存相关的知识,希望对你有一定的参考价值。

jvm缓存就是创建一些全局变量,如 Map、List 之类的容器用于存放数据。

 这样的优势是使用简单但是也有以下问题:

  1、只能显式的写入,清除数据。

  2、不能按照一定的规则淘汰数据,如 LRU,LFU,FIFO 等。

  3、清除数据时的回调通知。

  4、其他一些定制功能等。

java的三种缓存

   LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。具体实现:每个数据块有一个引用计数,数据块根据计数排序,相同计数按时间排序。新插入数据到队列尾部(计数为1),访问之后计数加一,队列重新排序。淘汰数据时删除队列最后的数据。

   LRU(Least Recently Used) “最近最少使用”。原理:按照近期访问最少到访问最多的顺序存储元素,LinkedHashMap提供了LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)构造函数,该哈希映射的迭代顺序就是最后访问其条目的顺序,这种映射很适合构建LRU缓存。LinkedHashMap提供了removeEldestEntry(Map.Entry<K,V> eldest)方法。该方法在每次添加新条目时移除最旧条目,但该方法默认返回false,这样,此映射的行为将类似于正常映射,即永远不能移除最旧的元素。因而需要重写该方法。

以上是关于缓存进行曲之java缓存的主要内容,如果未能解决你的问题,请参考以下文章

Android之ListView异步加载网络图片(优化缓存机制)

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

phalcon: 缓存片段,文件缓存,memcache缓存

java初探之静态页面化——客户端缓存

Android主流视频播放及缓存实现原理调研

java初探之缓存技术