很久没有写过新的博客了,缘由有很多,堂而皇之的理由就是工作忙,生活忙,各种累,直白1点其实就是变懒了,所以没有写。
在沉寂了这么长1段时间过后,终究又要重新动身了,对自己当前的状态,觉得首先要有所沉淀,然后就是要放空自己,惟有放空自己方能继续进步。
以后1段时间更新的博客内容主体是与Android Framework相干的疑问问题分析、机制实现的原理、源代码调用分析,然后伴随1些经常使用的小算法,语言特性,程序原理等。
今天就先介绍LRU和LFU这两个在Android的Framework和App中比较经常使用的缓存算法的思想原理,其实这些缓存算法的原理思想和Linux中的虚拟内存页面置换算法思想是1致的,只不过具体的不同。
LFU(Least Frequently Used):使用频率最少算法,思路和原则是如果1个数据在最近1段时间内使用次数很少,那末在将来1段时间内被使用的可能性也很小,这类算法的目的通俗直接1点理解就是:当产生缓存内容需要更新并且已存满时,快速的找到并替换截止到当前全部缓存中使用频率也就是次数最少的内容。
LRU(Least Recently Used):最近最久未使用算法,思路和原则是如果1个数据在最近1段时间没有被访问到,那末在将来它被访问的可能性也很小,这类算法的目的通俗直接1点理解就是:当产生缓存内容需要更新并且已存满时,快速的找到截止到当前全部缓存中最长时间没有被使用的内容,然后将其删除并重构缓存的结构,将释放出的内存位置存入更新的内容。
参考链接:
http://www.cnblogs.com/dolphin0520/p/3749259.html
http://www.cnblogs.com/dolphin0520/p/3741519.html
http://blog.sina.com.cn/s/blog_631d3a630101mhup.html
http://qyappchentao.sinaapp.com/linux-mem-al/
http://blog.sina.com.cn/s/blog_50197c290101ft7a.html
http://blog.csdn.net/summerhust/article/details/6867171
http://dennis-zane.iteye.com/blog/128278
http://blog.csdn.net/luoweifu/article/details/8297084/