返回介绍

4.1 LruCache 原理概要解析

发布于 2024-12-23 21:09:29 字数 824 浏览 0 评论 0 收藏 0

LruCache 就是 利用 LinkedHashMap 的一个特性( accessOrder=true 基于访问顺序 )再加上对 LinkedHashMap 的数据操作上锁实现的缓存策略

LruCache 的数据缓存是内存中的

  • 1.首先设置了内部 LinkedHashMap 构造参数 accessOrder=true , 实现了数据排序按照访问顺序。
  • 2.然后在每次 LruCache.get(K key) 方法里都会调用 LinkedHashMap.get(Object key)
  • 3.如上述设置了 accessOrder=true 后,每次 LinkedHashMap.get(Object key) 都会进行 LinkedHashMap.makeTail(LinkedEntry<K, V> e)
  • 4. LinkedHashMap 是双向循环链表,然后每次 LruCache.get -> LinkedHashMap.get 的数据就被放到最末尾了。
  • 5.在 puttrimToSize 的方法执行下,如果发生数据量移除,会优先移除掉最前面的数据(因为最新访问的数据在尾部)。

具体解析在: 4.2、4.3、4.4、4.5 。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文