LRU(Least recently used,最近最少使用)算法作為內存管理的一種有效算法,其含義是在內存有限的情況下,當內存容量不足時,為了保證程序的運行,這時就不得不淘汰內存中的一些對象,釋放這些對象佔用的空間,那麼選擇淘汰哪些對象呢?
LRU算法就提供了一種策略,告訴我們選擇最近一段時間內,最久未使用的對象將其淘汰,至於為什麼要選擇最久未使用的,因為其核心思想是「如果數據最近被訪問過,那麼將來被訪問的機率也更高」。
lru算法演示
1、最開始時,內存空間是空的,因此依次進入A、B、C是沒有問題的。
2、當加入D時,就出現了問題,內存空間不夠了,因此根據LRU算法,內存空間中A待的時間最為久遠,選擇A,將其淘汰。
3、當再次引用B時,內存空間中的B又處於活躍狀態,而C則變成了內存空間中,近段時間最久未使用的。
4、當再次向內存空間加入E時,這時內存空間又不足了,選擇在內存空間中待的最久的C將其淘汰出內存,這時的內存空間存放的對象就是E->B->D。
LRU算法的整體思路就是這樣的,其實非常簡單,就是當年我們學習的數據結構中,隊列的基本模型。代碼就不貼了,每次面試都會問到。