Java/Android引用類型及其使用分析

  Java/Android中有四種引用類型,分別是:

Java/Android引用類型及其使用分析

Strong reference - 強引用

Soft Reference - 軟引用

Weak Reference - 弱引用

Phantom Reference - 虛引用

不同的引用類型有着不同的特性,同時也對應着不同的使用場景。

  ng reference - 強引用

實際編碼中最常見的一種引用類型。常見形式如:A a = new A();等。強引用本身存儲在棧內存中,其存儲指向對內存中對象的地址。一般情況下,當對內存中的對象不再有任何強引用指向它時,垃圾回收機器開始考慮可能要對此內存進行的垃圾回收。如當進行編碼:a = null,此時,剛剛在堆中分配地址並新建的`a對象沒有其他的任何引用,當系統進行垃圾回收時,堆內存將被垃圾回收。

SoftReference、WeakReference、PhantomReference都是類rence的子類。Reference作爲抽象基類,定義了其子類對象的基本操作。Reference子類都具有如下特點:

rence子類不能無參化直接創建,必須至少以強引用對象爲構造參數,創建各自的子類對象;

2.因爲1中以強引用對象爲構造參數創建對象,因此,使得原本強引用所指向的堆內存中的對象將不再只與強引用本身直接關聯,與Reference的子類對象的引用也有一定聯繫。且此種聯繫將可能影響到對象的垃圾回收。

根據不同的子類對象對其指示對象(強引用所指向的堆內存中的對象)的垃圾回收不同的影響特點,分別形成了三個子類,即SoftReference、WeakReference和PhantomReference。