---恢復內容開始---java
java中,一個對象會一個引用變量引用該對像,這個是最多見的引用方式。以此同時,java.lang.ref包下提供了3個類,SoftReference、PhantomReferce和WeakReference,它們分別表明了系統對對象的3中引用方式:軟引用、虛引用、和弱引用spa
一、強引用(SoftReference)對象
這是java程序中最多見的引用方式。程序建立一個對象,並把這個對象賦給一個引用變量,當一個對象有一個或多個引用變量引用它時,系統不可能回收這個對象所在的堆內存。生命週期
二、軟引用(SoftReference)隊列
軟引用須要經過SoftReference類來實現,當一個對象只有軟引用時,它有可能被垃圾回收機制回收。對於只有軟引用的對象而言,當系統內存空間足夠時,它不會被系統回收,程序也可以使用該對象,當系統內存空間不足時,系統可能會回收它,軟引用一般用於對內存敏感的程序中。內存
三、弱引用(WeakReference)get
弱引用經過WeakReference類實現,弱引用和軟引用很想,但弱引用的引用級別更低,對於只有弱引用的對象而言,當系統垃圾回收機制運行時,無論系統內存是否足夠,總會回收該對象所佔用的內存。變量
四、虛引用(PhantomReference)垃圾回收
虛引用經過PhantomReference類實現,虛引用徹底相似於沒有引用。虛引用對對象自己沒有太大的影響,對象甚至感受不到虛引用的存在。若是一個對象只有一個虛引用時,那麼它和沒有引用的效果相同。虛引用主要用於跟蹤對象被垃圾回收的狀態,虛引用不能單獨使用,虛引用必須和引用隊列(ReferenceQueue)聯合使用。引用隊列由java.lang.ref.ReferenceQueue類表示,它用於保存被回收後對象的引用。注意:可是系統沒法經過虛引用來得到被引用的對象。即經過get()方法會返回Null。引用
上面三個引用類都包含一個get()方法,用於獲取被它們所引用的對象。
使用這個引用類能夠避免在程序執行期間將對象留在內存中,若是以軟引用、弱引用或虛引用的方法引用對象,垃圾回收器就可以隨意的釋放對象。若是但願儘量減小程序在其生命週期中所佔用的內存大小時,這些引用類就頗有用處。
必須指出:要使用這些特殊的引用類,就不能保留對對象的強引用,不然浪費這些引用類所提供的任何的好處。
---恢復內容結束---