LRU算法
- 哈希链表
- 自己的JAVA实现
LRU全称Least Recently Used,也就是 最近最少使用的意思,是一种内存管理算法,该算法最早应用于Linux操作系统。
这个算法基于一种假设:长期不被使用的数据,在未来被用到的几率也不大。因此,当数据所占内存达到一定阈值时,我们要移除掉最近最少被使用的数据。
在LRU算法中,使用了哈希链表。
哈希链表
哈希表是由若干个Key-Value组成的。在“逻辑”上,这些Key-Value是无所谓排列顺序的,谁先谁后都一样。
在哈希链表中,这些Key-Value不再是彼此无关的存在,而是被一个链条串了
起来。每一个Key-Value都具有它的前驱Key-Value、后继Key-Value,就像双向
链表中的节点一样。
原本无序的哈希表就拥有了固定的排列顺序
依靠哈希链表的有序性,我们可以把Key-Value按照最后的使用时间进行排序
将新插入的或者刚被访问的数据插入到链表的最右端
左端就是最近最少被访问的数据
假设这时缓存容量已经达到上限,必须先删除最近最少被访问的数据,那么位于哈希链表最左端的数据就会被删除,然后再把新数据插入最右端的位置。
LinkedHashMap已经实现了哈希链表