很久没有写过新的博客了,原因有很多,冠冕堂皇的理由就是工作忙,生活忙,各种累,直白一点其实就是变懒了,所以没有写。
在沉寂了这么长一段时间过后,终于又要重新出发了,对于自己当前的状态,觉得首先要有所沉淀,然后就是要放空自己,唯有放空自己方能继续进步。
以后一段时间更新的博客内容主体是与Android Framework相关的疑难问题分析、机制实现的原理、源代码调用分析,然后伴有一些常用的小算法,语言特性,程序原理等。
今天就先介绍LRU和LFU这两个在Android的Framework以及App中比较常用的缓存算法的思想原理,其实这些缓存算法的原理思想和Linux中的虚拟内存页面置换算法思想是一致的,只不过具体的不同。
LFU(Least Frequently Used):使用频率最少算法,思路和原则是如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小,这种算法的目的通俗直接一点理解就是:当发生缓存内容需要更新并且已经存满时,快速的找到并替换截止到当前整个缓存中使用频率也就是次数最少的内容。
LRU(Least Recently Used):最近最久未使用算法,思路和原则是如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小,这种算法的目的通俗直接一点理解就是:当发生缓存内容需要更新并且已经存满时,快速的找到截止到当前整个缓存中最长时间没有被使用的内容,然后将其删除并重构缓存的结构,将释放出的内存位置存入更新的内容。
参考链接:
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/