`
shootyou
  • 浏览: 84501 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

LinkedHashMap实现一个固定容量的基于最近最少使用算法的缓存类

阅读更多

固定容量的基于最近最少使用算法的LinkedHashMap.可用作简单缓存.使用方法与LinkedHashMap一致.

利用LinkedHashMap实现简单的缓存,必须实现removeEldestEntry方法,具体参见JDK文档.另外还加入了一个可重入的互斥锁定.

使用说明:LRU算法是LinkedHashMap本身通过双向链表来实现,当某个位置被使用(例如get操作),通过调整链表的指向将该位置调整到头位置,新加入的内容直接放在链表头,如此一来,最近被使用的内容就向链表头移动,需要替换时(已经达到容量时),链表最后的位置就是最近最少使用的位置。

源自:http://www.blogjava.net/killme2008/archive/2008/01/14/149645.html

分享到:
评论

相关推荐

    实现了LRU算法的缓存

    当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在这个Java实现的LRU缓存中,我们可能会看到以下几个关键知识点: 1. **数据结构的选择**: LRU缓存通常基于哈希表和双向链表实现。哈希表用于快速查找,而双向...

    LRU算法LRU算法LRU算法LRU算法

    LRU(Least Recently Used...总结一下,LRU算法是一种基于历史访问行为的缓存策略,它通过淘汰最近最少使用的数据来优化内存使用。在实际应用中,如数据库缓存、操作系统的页面替换策略等,LRU算法都展现出良好的性能。

    Lru算法缓存解决图片OOM

    首先,我们需要创建一个基于LRU算法的缓存类。这个类通常继承自Android的`BaseCache`或者自定义一个Map结构,如`LinkedHashMap`,因为`LinkedHashMap`已经实现了LRU特性,它维护了一个双向链表,可以按照插入或访问...

    实现 LRU 算法,和 Caffeine 和 Redis 中的缓存淘汰策略.docx

    Java 中实现 LRU 缓存的一个常见方法是利用 `LinkedHashMap` 类。`LinkedHashMap` 是 `HashMap` 的一个子类,它在哈希表的基础上添加了一个双向链表结构,可以维护元素的插入顺序或访问顺序。对于 LRU 缓存,我们...

    Java实现LRU算法.zip

    总的来说,Java实现LRU算法的关键在于利用数据结构特性来跟踪页面的使用频率,通过淘汰最近最少使用的页面来优化内存使用。通过学习和理解LRU算法的实现,我们可以更好地理解和处理内存限制问题,提高系统的性能和...

    Android图片缓存算法的代码例子

    在Android应用开发中,图片加载和缓存是一个关键性能优化环节。当用户浏览大量图片时,如果处理不当,可能会导致内存消耗过大,甚至引发应用程序崩溃。本示例着重讲解了如何实现图片缓存机制,包括自定义的...

    LRU算法实现1

    例如,以下是一个简单的LRU缓存实现,使用`LinkedHashMap`的继承方式: ```java public class LRUCache2, V> extends LinkedHashMap, V> { private final int MAX_CACHE_SIZE; public LRUCache2(int cacheSize) ...

    LRU算法--utils工具包

    1. **容量管理**:LRU缓存需要设定一个最大容量,当达到这个容量时,如何选择并移除最近最少使用的元素。 2. **数据结构**:`LinkedHashMap`在Java中用于实现LRU,因为它提供了插入顺序的遍历功能。 3. **线程安全**...

    LRU算法 java实现

    当缓存满时,LRU算法会优先淘汰最近最少使用的数据。在Java中,我们可以使用数据结构如HashMap和LinkedList来实现LRU缓存。 首先,我们需要一个双向链表来保存缓存中的元素,链表的节点包含元素的键值对以及前后...

    Android图片缓存之Lru算法(二)

    LRU(Least Recently Used)算法是一种常用的缓存淘汰策略,它遵循“最近最少使用”的原则,即当缓存容量达到上限时,优先淘汰最久未使用的数据。 Android中的LRU算法通常被用来管理内存和磁盘上的图片缓存。在内存...

    LRU_缓存策略_LRU_缓存.zip

    这个策略基于一个假设,即最近频繁使用的数据在未来也更有可能被频繁使用,因此保持这些数据在缓存中可以减少对主存的访问,提升系统性能。 LRU缓存的实现通常依赖于数据结构,如哈希表和链表。哈希表用于快速定位...

    Android使用LruCache缓存图片

    `LruCache`是Android对这种算法的实现,它通过维护一个双向链表和一个哈希表,来追踪最近使用过的项,并根据容量限制进行自动清理。 **2. 创建LruCache实例** 在Android中,首先我们需要创建一个`LruCache`实例。它...

    三级缓存demo

    首先,LruCache(Least Recently Used Cache)是Android SDK提供的一种基于最近最少使用算法(LRU)的内存缓存。LRU策略的基本思想是,如果一个数据最近被访问过,那么它未来被访问的可能性较高。因此,当内存空间...

    ImageLoaderDemo图片三级缓存

    在图片加载中,内存缓存通常用于存储最近使用或最常使用的图片,当内存空间不足时,根据LRU(Least Recently Used)算法自动删除最近最少使用的图片,以保证缓存的高效运行。LRU策略有助于保持较高的缓存命中率,...

    LruCache缓存

    `LruCache`内部使用了一个`LinkedHashMap`作为数据结构,`LinkedHashMap`是一个有序的哈希表,它的特性使得可以方便地实现LRU策略。`LinkedHashMap`维护了两个双向链表,一个按照插入顺序,另一个按照访问顺序。`...

    基于Java实现缓存Cache的深入分析

    本文将深入探讨如何使用Java实现一个基于LinkedHashMap的LRU(Least Recently Used,最近最少使用)缓存策略。 LRU缓存策略的基本思想是:当缓存满时,优先淘汰最近最少使用的数据。在Java中,LinkedHashMap类提供...

    缓存面试题大全 pdf版

    下面是一个基于`LinkedHashMap`实现的LRU缓存的基本示例: ```java import java.util.LinkedHashMap; import java.util.Map; public class LRUCache, V> extends LinkedHashMap, V> { private final int ...

    LRU.rar_LRU_LRU ja

    1. **LRU缓存结构**:LRU缓存通常由两个部分组成:一个存储数据的容器(在这里是`LinkedHashMap`)和一个固定大小的容量。`LinkedHashMap`保持了插入顺序,通过`accessOrder`参数设置为`true`,可以使其变为访问顺序...

    浅谈Android LruCache的缓存策略

    LRU(Least Recently Used)算法是一种常用的缓存淘汰策略,其原则是优先移除最近最少使用的数据。 二、LruCache详解 LruCache是Android 3.1引入的一个内置缓存类,适用于内存缓存。它基于LinkedHashMap实现,这是...

    LRU.rar_LRU_LRU java_lru.java

    LRU(Least Recently Used)是最常用的页面替换算法之一,它基于“最近最少使用”的原则,即当内存空间不足时,最长时间未被使用的数据会被优先淘汰。在这个Java实现的LRU算法示例中,我们将深入探讨LRU的核心概念、...

Global site tag (gtag.js) - Google Analytics