博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LRU算法
阅读量:4704 次
发布时间:2019-06-10

本文共 934 字,大约阅读时间需要 3 分钟。

LRU是Least Recently Used 近期最少使用算法。
的一种页面置换算法,对于在内存中但又不用的 (内存块)叫做LRU,Oracle会根据那些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
什么是LRU算法? LRU是Least Recently Used的缩写,即最少使用 ,是为虚拟页式 服务的。

LRU算法思想:

 

达到这样一种情形的算法是最理想的——每次调换出的页面是所有内存页面中最迟将被使用的——这可以最大限度的推迟页面调换,这种算法,被称为理想页面置换算法。可惜的是,这种算法是无法实现的。

 

为了尽量减少与理想算法的差距,产生了各种精妙的算法,最近最少使用页面置换算法便是其中一个。LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到 。这个,就是著名的局部性原理——比内存速度还要快的cache,也是基于同样的原理运行的。因此,我们只需要在每次调换时,找到最近最少使用的那个页面调出内存 

 

 

应用:(比如说图片缓存)

 LRU算法也可以用于一些实际的应用中,如你要做一个浏览器,或类似于淘宝客户端的应用的就要用到这个原理。大家都知道浏览器在浏览网页的时候会把下载的图片临时保存在本机的一个文件夹里,下次再访问时就会,直接从本机临时文件夹里读取。但保存图片的临时文件夹是有一定容量限制的,如果你浏览的网页太多,就会一些你最不常使用的图像删除掉,只保留最近最久使用的一些图片。这时就可以用到LRU算法 了,这时上面算法里的这个特殊的栈就不是保存页面的序号了,而是每个图片的序号或大小;所以上面这个栈的元素都用Object类来表示,这样的话这个栈就可以保存的对像了。 java 类:public LinkedHashMap (int initialCapacity, float loadFactor, boolean accessOrder)   当参数accessOrder设置为true时就为LRU算法

转载于:https://www.cnblogs.com/lianghui66/p/3267252.html

你可能感兴趣的文章
C#设计模式(4)——抽象工厂模式
查看>>
高级基础知识 ObservableCollection 类
查看>>
20165101刘天野 2018-2019-2《网络对抗技术》Exp5 MSF基础应用
查看>>
LeetCode: Find Bottom Left Tree Value
查看>>
安装包签名
查看>>
流行的开源软件和技术
查看>>
iOS---去除url中的反斜扛
查看>>
qwq
查看>>
检测设备朝向和移动
查看>>
JQuery Tips(4)----一些关于提高JQuery性能的Tips
查看>>
如何恢复删除文件
查看>>
vscode中执行gulp task的简便方法
查看>>
Ugly Number II
查看>>
【转】数据库索引的基础知识
查看>>
如何判断你的windows系统是32位还是64位?
查看>>
『题解』洛谷P1314 聪明的质监员
查看>>
Pictures & texts synthesiser
查看>>
《hello--world团队》第六次作业:团队项目系统设计改进与详细设计
查看>>
JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)
查看>>
C#中的文件导出大全
查看>>