缓存是指对数据的复用
比较常见的有:
1. 内存缓存
2. 磁盘缓存
电脑的三大核心部件:
1. 中央处理器
计算机的可编程性主要是指对中央处理器的编程。
2. 内部存储器
存储器的种类很多,按用途可以分为:
2.1 主存储器(即内存)
是CPU能直接寻址的存储空间,它的特点是存取速率快。
内存包括:
2.1.1 随机存储器(Random Access Memory)
可以随机读写数据,但是电源关闭时存储的数据就会丢失
2.1.2 只读存储器(Read Only Memory)
只能读取,不能更改,即使机器断电,数据也不会丢失
2.1.3 高级缓存(Cache)
介于CPU与内存之间
读写速度比内存还快
当CPU在内存中读取或写入数据时,数据会被保存在高级缓冲存储器中,
当下次访问该数据时,CPU直接读取高级缓冲存储器,而不是更慢的内存。
2.2 辅助存储器
外存储器
对于电脑而言,通常说的是硬盘或者光盘等,对于手机一般指的是SD卡
3. 输入输出设备
缓存的类型:
内存缓存:
这里的内存主要指的存储器缓存
磁盘缓存:
这里主要指的是外部存储器,电脑指的是硬盘,手机的话指的就是SD卡
缓存策略:
当缓存容量达到设定的容量的时候,会根据制定的策略进行删除相应的元素。
FIFO(first in first out):
先进先出策略,类似队列。
LFU(less frequently used):
最少使用策略,RecyclerView的缓存采用了此策略。
LRU(least recently used):
最近最少使用策略,Picasso在进行内存缓存的时候采用了此策略。
内存泄漏:
主要发生在内存缓存中
解决方法:
引用置空:
将缓存中引用的对象置空,然后GC就能够回收这些对象
采用弱引用:
采用弱引用关联对象,这样就能够不干涉对象的生命周期,以便GC能够正常回收
Java有四种引用:
强引用、软引用、弱引用、虚引用
弱引用的对象拥有更短暂的生命周期
垃圾回收器一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存