心理

當前位置 /首頁/完美生活/心理/列表

lru置換算法實現方法

lru置換算法實現方法

LRU是一種頁面置換算法,在對於內存中但是又不用的數據塊,叫做LRU,操作系統會根據那些數據屬於LRU而將其移出內存而騰出空間來加載另外的數據

LRU算法:最近最少使用,簡單來説就是將數據塊中,每次使用過的數據放在數據塊的最前端,然後將存在的時間最長的,也就是數據塊的末端的數據剔除掉這就是LRU算法。

LRU全稱是Least Recently Used,即最近最久未使用的意思。

LRU算法的設計原則是:如果一個數據在最近一段時間沒有被訪問到,那麼在將來它被訪問的可能性也很小。也就是説,當限定的空間已存滿數據時,應當把最久沒有被訪問到的數據淘汰。

實現LRU:

1、 用一個數組來存儲數據,給每一個數據項標記一個訪問時間戳,每次插入新數據項的時候,先把數組中存在的數據項的時間戳自增,並將新數據項的時間戳置為0並插入到數組中。每次訪問數組中的數據項的時候,將被訪問的數據項的時間戳置為0。當數組空間已滿時,將時間戳最大的數據項淘汰。

2、利用一個鏈表來實現,每次新插入數據的時候將新數據插到鏈表的頭部每次緩存命中(即數據被訪問),則將數據移到鏈表頭部那麼當鏈表滿的時候,就將鏈表尾部的數據丟棄。

3、 利用鏈表和hashmap。當需要插入新的數據項的時候,如果新數據項在鏈表中存在(一般稱為命中),則把該節點移到鏈表頭部,如果不存在,則新建一個節點,放到鏈表頭部,若緩存滿了,則把鏈表最後一個節點刪除即可。在訪問數據的時候,如果數據項在鏈表中存在,則把該節點移到鏈表頭部,否則返回-1。這樣一來在鏈表尾部的節點就是最近最久未訪問的數據項。

TAG標籤:算法 lru 置換 #