JAVA對象引用的四種方式

引用 Objecto=newObject();

這個 o,我們可以稱之爲對象引用,而 newObject()我們可以稱之爲在內存 中產生了一個對象實例。

當寫下 o=null 時,只是表示 o 不再指向堆中 object 的對象實例,不代表這 個對象實例不存在了。


 強引用就是指在程序代碼之中普遍存在的,類似“Objectobj=newObject()” 這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用的對象實例。 


軟引用是用來描述一些還有用但並非必需的對象。對於軟引用關聯着的對象, 在系統將要發生內存溢出異常之前,將會把這些對象實例列進回收範圍之中進行 第二次回收。如果這次回收還沒有足夠的內存,纔會拋出內存溢出異常。在 JDK 1.2 之後,提供了 SoftReference 類來實現軟引用。 


弱引用也是用來描述非必需對象的,但是它的強度比軟引用更弱一些,被弱 引用關聯的對象實例只能生存到下一次垃圾收集發生之前。當垃圾收集器工作時, 無論當前內存是否足夠,都會回收掉只被弱引用關聯的對象實例。在 JDK1.2 之 後,提供了 WeakReference 類來實現弱引用。 


虛引用也稱爲幽靈引用或者幻影引用,它是最弱的一種引用關係。一個對象 實例是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用 來取得一個對象實例。爲一個對象設置虛引用關聯的唯一目的就是能在這個對象 實例被收集器回收時收到一個系統通知。在 JDK1.2 之後,提供了 PhantomReference 類來實現虛引用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章