java四大引用

1.強(qiáng)引用

一般的Object obj = new Object() ,就屬于強(qiáng)引用。在任何情況下,只要有強(qiáng)引用關(guān)聯(lián)(與根可達(dá))還在,垃圾回收器就永遠(yuǎn)不會回收掉被引用的對象。
根可達(dá):根節(jié)點可達(dá)。
根節(jié)點有哪些

a.虛擬機(jī)棧(棧幀中的本地變量表)中引用的對象。

b.方法區(qū)中類靜態(tài)屬性引用的對象。

c. 方法區(qū)中常量引用的對象。

d.本地方法棧中JNI(即一般說的Native方法)引用的對象。

e. JVM的內(nèi)部引用(class對象、異常對象NullPointException、OutofMemoryError,系統(tǒng)類加載器)。

f. 所有被同步鎖(synchronized關(guān)鍵)持有的對象。

g. JVM內(nèi)部的JMXBean、JVMTI中注冊的回調(diào)、本地代碼緩存等

h.JVM實現(xiàn)中的“臨時性”對象,跨代引用的對象(在使用分代模型回收只回收部分代時)。

2.軟引用SoftReference

一些有用但是并非必需,用軟引用關(guān)聯(lián)的對象,系統(tǒng)將要發(fā)生內(nèi)存溢出(OuyOfMemory)之前,這些對象就會被回收(如果這次回收后還是沒有足夠的空間,才會拋出內(nèi)存溢出)。

3.弱引用WeakReference

一些有用(程度比軟引用更低)但是并非必需,用弱引用關(guān)聯(lián)的對象,只能生存到下一次垃圾回收之前,GC發(fā)生時,不管內(nèi)存夠不夠,都會被回收。比如ThreadLocal、WeakHashMap的使用。一般弱引用比軟引用用得多。

4.虛引用PhantomReference

幽靈引用,最弱(隨時會被回收掉)。垃圾回收的時候收到一個通知,就是為了監(jiān)控垃圾回收器是否正常工作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從 JDK1.2 版本開始,把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低...
    flynnny閱讀 229評論 0 0
  • 強(qiáng)引用、軟引用、弱引用和虛引用 四種應(yīng)用區(qū)別在于體現(xiàn)對象不同的可達(dá)性狀態(tài),進(jìn)而影響到GC。 一、可達(dá)性狀態(tài)----...
    Joe_blake閱讀 488評論 0 1
  • 從 JDK1.2 版本開始,把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低...
    小呀么小黃雞閱讀 232評論 0 0
  • 1.強(qiáng)引用 2.軟引用 描述: ?? 一個對象具有軟引用,內(nèi)存空間足夠,垃圾回收器就不會回收它;如果內(nèi)存空間不足了...
    wang6771264閱讀 1,013評論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,810評論 0 11

友情鏈接更多精彩內(nèi)容