Java的四種參考型別

來源:互聯網
上載者:User

在Java中有四種參考型別,他們是:強引用(Strong Reference),軟引用(Soft Reference),弱引用(Weak Reference) 和 虛引用(Phantom Reference)。

一.四種參考型別的解釋:

  • JVM會持有一般對象直到他們不再是可觸及的狀態。換句話說,當沒有任何有效引用指向他們的時候會被記憶體回收,無效引用不會被計算在內。
  • 軟引用指向的對象會在不存在任何指向他們的引用並且記憶體空間不足情況下被垃圾收集。大多數情況下被用來實現記憶體敏感的緩衝。沒有GC的時間限制,會在OOM發生之前清理完畢。
  • 弱引用指向的對象會在沒有任何引用指向他們的時候立即被垃圾收集。如果一個對象只有弱引用的話,那麼這個對象是不可觸及的。這些對象會在任何時候被垃圾收集並且會在下一個GC周期裡被丟棄。
  • 虛引用指向的是已經執行finalize方法,但是還沒有回收記憶體的對象。

二.四種參考型別的比較:

類型 目的 作用 觸發GC條件 實作類別
強引用 普通參考型別,只要對象的引用是強引用,他們就不會被垃圾收集 普通引用 任何對象如果不是強引用都可以被垃圾收集 預設類型
軟引用 在記憶體足夠的時候,對象不會被垃圾收集 為了保證即使對象沒有任何引用指向它的時候也不會被垃圾收集,防止有引用再次指向這個對象 在第一次GC後,JVM需要回收更多的空間 java.lang.ref.SoftReference
弱引用 在對象可觸及的狀態下不會被垃圾收集 如果對象不再被引用會被自動回收 GC後對象只有弱引用 java.lang.ref.WeakReference
java.util.WeakHashMap
虛引用 讓你可以清理已經執行finalize方法,但是還沒有回收記憶體的對象 特殊清理 finalize方法執行之後 java.lang.ref.PhantomReference

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.