天天看點

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);        

對象的可達程度