LinkedHashMap
1,LinkedHashMap 是一个双向的链表。
2,LinkedHashMap 还有一个特有的变量 accessOrder,他是布尔型变量,true 表示链表按访问顺序,false 表示按插入顺序。
3,当 accessOrder的值为true,那么get后会把这个Node放在链表的末尾,这就是利用LinkedHashMap实现LRUCache的核心思想。
4,利用 LinkedHashMap 实现LRUCache 必须同时满足 accessOrder = true 且重写 removeEldestEntry 方法。
-LinkedHashMapLruCache
Glide使用LruCache和弱引用结合的方式做缓存个人理解优势为:
1,分担lrucache的压力。减少trimToSize的概率。如果正在remove的是张大图,lrucache正好处在临界点,此时remove操作,将延缓lrucache的trimToSize操作。
2 ,提高效率:activeResource用的是hashmap,lrucache用的是linkedhashmap,从访问效率而言,肯定是hashmap高不少。hashmap起一个辅助作用。并不是保护图片不被回收。
3,其实弱引用的一个核心就是系统内存资源不足时,释放内存, 而lrucash是核心是使用的内存没有超过自己的设定的最大值,就会一直缓存,但是不能感知系统内存到底够不够,所以当系统内存不够使用的时候就引起oom,而弱引用的引入恰好解决了这个问题。
版权声明:本文为JustingWang_1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。