理解Glide中LruCache和LinkedHashMap

  • LinkedHashMap
    1,LinkedHashMap 是一个双向的链表。
    2,LinkedHashMap 还有一个特有的变量 accessOrder,他是布尔型变量,true 表示链表按访问顺序,false 表示按插入顺序。
    3,当 accessOrder的值为true,那么get后会把这个Node放在链表的末尾,这就是利用LinkedHashMap实现LRUCache的核心思想。
    4,利用 LinkedHashMap 实现LRUCache 必须同时满足 accessOrder = true 且重写 removeEldestEntry 方法。
    -LinkedHashMap

  • LruCache
    Glide使用LruCache和弱引用结合的方式做缓存个人理解优势为:
    1,分担lrucache的压力。减少trimToSize的概率。如果正在remove的是张大图,lrucache正好处在临界点,此时remove操作,将延缓lrucache的trimToSize操作。
    2 ,提高效率:activeResource用的是hashmap,lrucache用的是linkedhashmap,从访问效率而言,肯定是hashmap高不少。hashmap起一个辅助作用。并不是保护图片不被回收。
    3,其实弱引用的一个核心就是系统内存资源不足时,释放内存, 而lrucash是核心是使用的内存没有超过自己的设定的最大值,就会一直缓存,但是不能感知系统内存到底够不够,所以当系统内存不够使用的时候就引起oom,而弱引用的引入恰好解决了这个问题。

你可能感兴趣的:(理解Glide中LruCache和LinkedHashMap)