LruCache原理

2020-09-04  本文已影响0人  enchanted1107

LruCache可以翻译为最近最少使用缓存,它用强引用保存需要缓存的对象,它内部维护一个队列(实际上是LinkedHashMap内部的双链表,不支持线程安全,LruCache对它进行封装,添加了线程安全操作),当其中的一个值被访问时,它被放倒队列尾部,当缓存将满时,队列头部(也就是最近最少被访问的)被丢弃,之后可以被垃圾回收。
LruCache比较重要的几个方法如下:
●public final Vget(K key)
返回cache中key对应的值,调用这个方法后,被访问的值会移动到队列的尾部。
●public final V put(K key,V value)
根据key存放value,存放的value会移动到队列的尾部
●protect int sizeOf(K key,V value)
返回每个缓存对象的大小,用来判断缓存是否快要满了,这个方法必须重写。
●protect void entryRemoved(boolean evicted,K key,V oldValue,V newValue)
当一个缓存对象被丢弃时调用的方法,这是个空方法,可以重写,不是必须的,第一个参数为true:当缓存对象是为了腾出空间而被清理时候。第一个参数为false:缓存的对象entry被remove移除或者被put覆盖时候。

上一篇下一篇

猜你喜欢

热点阅读