在JDK 1.2以前的版本中,对象处于可触及(reachable)状态,程序才能使用它。对象的引用分为4种级别由高到低依次为:强引用、软引用、弱引用、虚引用。
1、强引用(StrongReference)
简单来说就是使用强引用的对象,当内存不足的时候,宁愿出错,抛出 OutOfMemoryError的错误,垃圾回收器也不会回收它来解决内存不足的问题。
2、软引用(SoftReference)
软引用对象,内存够,垃圾回收器就不回收,内存空间不够,则回收对象内存。但是只要垃圾回收器没有回收,那对象就会被系统一直引用。软引用可以实现高速缓存,但是不能设置缓存大小。
3、弱引用(WeakReference)
弱引用与软引用类似,只是内存不够时,垃圾回收器优先回收弱引用。
4、虚引用(PhantomReference)
虚引用就是形同虚设的,没有生命周期,随时都能被垃圾回收器回收,主要用来跟踪对象被垃圾回收器回收的活动。
以上四种引用,常用的是软引用(SoftReference),在Android没有LruCache来缓存数据之前。当内存不够的时候,垃圾回收机制按优先级回收:虚引用——>软引用——>弱引用.