1. 程式人生 > >5.Java的四種引用,強弱軟虛,用到的場景。

5.Java的四種引用,強弱軟虛,用到的場景。

在JDK1.2後,java對引用的概念進行了擴充。按照引用強度依次從強到弱分為:強引用、軟引用(SoftReference)、弱引用(WeakReference)、虛引用(PhantomReference)用四種。

強引用:最常見的,不會被GC回收的物件,如 Object obj = new Object();

軟引用:可有可無的物件,如果記憶體空間足夠,GC就不會去回收這個物件,如果記憶體將要發生不足或者記憶體溢位異常時,就會回收軟引用。如果這次回收還沒有回收足夠的空間,則回丟擲記憶體溢位異常。通常用SoftReference類實現軟引用。

弱引用:也是描述可有可無的物件,和軟引用不同的是,它的生命週期更短,被軟引用關聯的物件一定只能生存在下一次垃圾回收收集之前,在GC的過程中,一旦發現有弱引用的物件,不管當前記憶體空間是否足夠,都會回收它的記憶體。 真是因為這個特性,所以弱引用常用於Map資料結構中,引用佔用空間記憶體較大的物件。通常用WeakReference類實現軟引用。

虛引用:也稱幽靈引用,作用的唯一目的就是:給一個物件設定虛引用就是為了能在這個物件被收集器回收時可以收到一個系統通知。當GC準備回收一個物件時,發現它還有虛引用,就會在回收前,把虛引用加入到引用佇列中,程式可以通過判斷佇列中是否加入虛引用來判斷被引用的物件是否將要GC回收,從而可以在finalize方法中採取措施。通常用PhantomReference類實現軟引用。