初學Java,對象的軟,弱和虛引用(二十三)

java.lang.ref包下提供了三個類SoftReference,phantomReference WeakReference,分別代表軟引用,虛引用和弱引用

C#中沒有這些概念

強引用,最常見的引用,程序創建一個對象,並把這個對象賦值給一個引用變量,通過該引用來實際操作對象

軟引用,需要通過SoftReference類來實現,當一個對象只有一個軟引用,它有可能被垃圾回收機制回收。內存空間足夠時,不會被回收,不足夠時將被回收

弱引用,需要通過WeakReference類來實現,當垃圾回收機制運行時,不管內存是否足夠,總會回收該對象所佔用的內存

虛引用,通過phantomReference 類實現,虛引用類似於完全沒有引用。主要用於跟蹤對象被回收的狀態 ,不能單獨使用,必須和引用隊列(ReferenceQueue)聯合使用

上面三個引用類都包含一個get方法,用於獲取它們所引用的對象

引用隊列由java.langl.ref.ReferenceQueue類表示,用於保存被回收後對象的引用

 

01.import java.lang.ref.WeakReference;  
02.public class TestReference   
03.{  
04.    public static void main(String[] args)   
05.    {  
06.        //創建一個字符串對象  
07.        String str = new String("Structs2 權威指南");  
08.        //創建一個弱引用,讓此引用引用到"Struts2 權威指南"字符串  
09.        WeakReference wr = new WeakReference(str);  
10.        //切斷str引用和"Struts2 權威指南"字符串之間的引用   
11.        str = null;  
12.        //取出弱引用所引用的對象  
13.        System.out.println(wr.get());  
14.        //強制垃圾回收  
15.        System.gc();  
16.        System.runFinalization();  
17.        ///再次取出弱引用所引用的對象  
18.        System.out.println(wr.get());  
19.    }  
20.}  


 

輸出:

Struts2 權威指南


null


 

發佈了31 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章