1. 程式人生 > >Android記憶體優化—Java的引用方式

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

物件的可達程度

強可達:無需引用直接可達
軟可達:通過一個軟引用可達
弱可達:通過一個弱引用可達
虛可達:通過一個虛引用可達
不可達:沒有任何引用指向物件