Android LruCache原理

Posted ha_cjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android LruCache原理相关的知识,希望对你有一定的参考价值。

LruCache原理:

维护一个缓存对象列表,按照访问顺序进行对象排列,就是将一直没有访问的对象放到队尾,即将淘汰。而最近访问的对象放在队头,最后淘汰。而这个队列主要是通过LinkedHashMap实现。

LinkedHashMap:(默认为插入排序,即输入与输出顺序一致)

继承于HashMap,使用双向链表来存储Map中的Entry顺序关系。顺序有2,一是访问顺序,一是插入顺序,可以由其构造方法LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder:true表示顺序访问,false是插入排序)指定。所以,get,put,remove等操作,它除了做HashMap的操作,还需要调整Entry顺序列表的工作。

android中的LruCache将LinkedHashMap中的默认顺序设置为访问顺序,每次调用get,则将该对象移到链表的头部,调用put插入新的对象到链表头部。当内存缓存达到最大值时,就将链表尾部的对象移除。每次put或者remove,都需要判断缓存大小是否足够trimToSize。

注:链表头部-最近使用或者插入的;链表尾部-最近很少使用的。

本文图片来自于网络,若有侵权请联系本人,必删!

以上是关于Android LruCache原理的主要内容,如果未能解决你的问题,请参考以下文章

Android LruCache原理

Android 内存缓存框架 LruCache 的实现原理

Android面试收集录10 LruCache原理解析

android LRUCache解析

Android内存优化之 LruCache与DiskLruCache

LRUCache原理分析