避免OOM系列之(二)-------LruCache使用以及源码详细解析

来源:互联网 发布:天谕sabar捏脸数据图女 编辑:程序博客网 时间:2024/06/05 07:49

开始准备先讲引用的,但是考虑到网上有很多优秀的框架,关于缓存这块基本上全是用的LruCache,所有先讲解下Lrucache的使用和源码分析。

  LRU是Least Recently Used 近期最少使用算法。其实LruCache的作用就是对缓存的元素进行排序,当超过设定的内存值时就会将使用最少,使用最早元素先回收。
LruCache的声明:

上面的声明代码是LruCache中注释文本中的,源码中已经明确的告诉我们使用的方法。
上面的声明只是告诉我们最大可以缓存的值和缓存的元素大小的计算方法。我们也可以不这么用,我们设置最大缓存的元素个数(以下代码不可使用,因为你不知道元素的大小,非常内存泄漏,我写的原因,只是告诉大家这边的值是可以灵活变动的,LruCache的作用只是按照我们给的方式计算):

上面代码只是参考,谢谢。
LruCache的使用:

LruCache的声明和使用和简单,要注意的就是关于缓存大小的设置,网上很多都是设置应用程序大小的1/8.这个看你个人情况。下面就开始分析源码:因为源码太多,所有只是截取了重要的部分:


上面是源码中主要的字段和方法,代码不难所有不做太多叙述,重点要讲的就是 map 这个字段。因为lruCache完全是对LinkedHashMap的封装。
因为LinkedHashMap,HashMap,AbstractMap,Map代码过多,所有我把<<LinkedHashMap源码分析>>,放到一篇新的微博中:











0 0
原创粉丝点击