天天看点

Android内存优化—Java的引用方式

四种引用方式

1、强引用(StrongReference)

2、软引用(SoftReference)

3、弱引用(WeakReference)

4、虚引用(PhantomReference)

强引用(StrongReference)

1、只要某个对象有强引用与之关联,JVM必定不会回收这个对象

2、即使内存不足,JVM宁愿抛出OutOfMemory错误也不会回收这种对象

例:

Object object = new Object();
  String str = "hello";      

软引用(SoftReference)

1、用来描述一些有用但并不是必需的对象

2、对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象

3、很适合用来实现缓存:比如网页缓存、图片缓存等

例如:

SoftReference aSoftRef = new SoftReference(aRef);        

弱引用(WeakReference)

1、弱引用是用来描述非必需对象的

2、当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。

例如:

WeakReference<People> reference = new WeakReference<People>(new People());       

虚引用(PhantomReference)

1、不影响对象的生命周期

2、如果一个对象与虚引用关联,则跟没有引用与之关联一样

3、在任何时候都可能被垃圾回收器回收

ReferenceQueue<String> queue = new ReferenceQueue<String>();  
    PhantomReference<String> pr  = new PhantomReference<String>(new String("hello"), queue);        

对象的可达程度