LRU (Least Recently Used 最近最少使用)
不断将最近使用的对象放到列表的顶部,这样最近最少使用的对象就会慢慢沉到底部,当容量不足的时候,能够将底部的对象去除,以留出空间给新的对象。算法
LRU-2
LRU-2算法是LRU算法的一个优化算法。LRU会将最近访问过的对象放置到顶部,可是有时候一次访问不能表明缓存以后会被继续访问,因此后来增长了一个阈值,当访问达到必定次数以后才会加入到缓存列表的顶部。未达到阈值的对象会暂时缓存在另一张表中,基于LRU算法更新。阀值能够设置为2,3,4等等,可是经过实践后发现阀值设置为2有更好的适用性,因此通常都使用2做为阀值缓存
FIFO(First In First Out 先进先出)
FIFO是将管理一个缓存列表,将先生成的缓存放在前面,最近生成的缓存放在列表的后面。当缓存空间满的时候,将最先生成的缓存去除。该算法很简单,可是缓存效果很差。app
LFU(Least Frequently Used 最不常常使用)
LFU是给每一个缓存对象设置一个缓存频率,当缓存空间不足时,将最少使用的缓存对象去除。当遇到某些缓存对象以前历史上使用频率很高,可是以后再也不使用时,这种算法会致使没有价值的缓存长期在缓存中驻留,致使实际可用的缓存空间减小。dom
RAND(Random Algorithm)
当缓存空间不足时,系统经过一个随机值删除缓存空间中的随机一个缓存对象。这种算法也是比较简单的,可是命中率很低。优化
OPT(Optimal Replacement Algorithm 最优替换)
当缓存空间不足时,系统将将来最不可能被使用的缓存对象除去。这是最好的算法,惟一的缺点是没法实现。.net
参考文档:对象
https://my.oschina.net/jiangch/blog/678491blog
http://blog.csdn.net/appletreesujie/article/details/8262959文档