码迷,mamicode.com
首页 > 移动开发 > 详细

Android LruCache原理

时间:2018-01-09 16:46:57      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:adf   alc   img   内存缓存   trim   str   android l   排列   通过   

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原理

标签:adf   alc   img   内存缓存   trim   str   android l   排列   通过   

原文地址:https://www.cnblogs.com/hacjy/p/8251508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!