1. 程式人生 > 其它 >期望成長為合格CTO的你如何選擇合適的環境?

期望成長為合格CTO的你如何選擇合適的環境?

四種引用型別 JDK1.2 之前,一個物件只有“已被引用”和"未被引用"兩種狀態,這將無法描述某些特殊情況下的物件,比如,當記憶體充足時需要保留,而記憶體緊張時才需要被拋棄的一類物件。 所以在 JDK.1.2 之後,Java 對引用的概念進行了擴充,將引用分為了:強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference)4 種,這 4 種引用的強度依次減弱。 一,強引用 Objectobj =newObject();//只要obj還指向Object物件,Object物件就不會被回收obj =null;//手動置null 只要強引用存在,垃圾回收器將永遠不會回收被引用的物件,哪怕記憶體不足時,JVM也會直接丟擲OutOfMemoryError,不會去回收。如果想中斷強引用與物件之間的聯絡,可以顯示的將強引用賦值為null,這樣一來,JVM就可以適時的回收物件了 二,軟引用 軟引用是用來描述一些非必需但仍有用的物件。在記憶體足夠的時候,軟引用物件不會被回收,只有在記憶體不足時,系統則會回收軟引用物件,如果回收了軟引用物件之後仍然沒有足夠的記憶體,才會丟擲記憶體溢位異常。這種特性常常被用來實現快取技術,比如網頁快取,圖片快取等。 在 JDK1.2 之後,用java.lang.ref.SoftReference類來表示軟引用。 三,弱引用 弱引用的引用強度比軟引用要更弱一些,無論記憶體是否足夠,只要 JVM 開始進行垃圾回收,那些被弱引用關聯的物件都會被回收。在 JDK1.2 之後,用 java.lang.ref.WeakReference 來表示弱引用。 四,虛引用 虛引用是最弱的一種引用關係,如果一個物件僅持有虛引用,那麼它就和沒有任何引用一樣,它隨時可能會被回收,在 JDK1.2 之後,用 PhantomReference 類來表示,通過檢視這個類的原始碼,發現它只有一個建構函式和一個 get() 方法,而且它的 get() 方法僅僅是返回一個null,也就是說將永遠無法通過虛引用來獲取物件,虛引用必須要和 ReferenceQueue 引用佇列一起使用。