Java 中的四種引用

來源:互聯網
上載者:User

標籤:系統   操作   span   person   out   緩衝   代碼   更新   bag   

1、強引用(Strong Reference)在 Java 中四種引用中是“最強”的,我們平時通過 new 關鍵字建立的對象都屬於強引用,如下面的代碼:
  Person person = new Person();
其中的 person 就是一個強引用,只有當它不再被使用後才會被記憶體回收行程回收掉。當記憶體不足時,但是其依然在被使用中,那麼記憶體回收行程也不會回收其引用的對象;JVM 寧願報“記憶體流失錯誤    (OutofMemoryError)”,終止程式也不會回收此引用所關聯的對象。


2、軟引用(Soft Reference)是比強引用要弱一級的引用,當記憶體不足時即可被記憶體回收行程(garbage collection)回收,記憶體充足是不被記憶體回收行程(garbage collection)回收;通常用於實現快取,顧名思義,快取要求速度快,我們通常將資料放置到記憶體中來實現,出於成本的考慮,記憶體的大小終究是有限,這就要求我們提煉出訪問高頻,更新低頻的資料放入到緩衝中;隨著放入的資料越來越多時,記憶體出現不足,JVM 通過 GC 回收一部分記憶體資源,並不影響用戶端的訪問,因為我們在資料庫中有完整的資料,從而避免系統的宕機。下面是範例程式碼,用於建立一個軟引用:
  Person person = new Person();
  SoftReference<Person> personSoftReference = new SoftReference(person);
其中的 personSoftReference 被稱為軟引用,引用的是 new Person() 這個對象;


3、弱引用(Weak Reference)是比軟引用弱一級的引用,只要被記憶體回收行程(garbage collection)掃描到就會被即刻回收,不管記憶體夠不夠。弱引用通常與引用隊列(Reference Queue)一起使用,記憶體回收行程在回收弱引用關聯的對象之前會先將其放入到引用隊列中,我們可以監聽這個引用隊列(Reference Queue),當引用隊列中有了此對象,那麼就可以在其被回收前做我們的操作。範例程式碼如下:
  Person person = new Person();
  WeakReference<Person> personWeakReference = new WeakReference(person);
其中的 personSoftReference 被稱為弱引用,引用的是 new Person() 這個對象;


4、虛引用(Phantom Reference)是“最弱”的一種引用,可有可無的引用,也可以理解為幾乎沒有引用,隨時可能被記憶體回收行程(garbage collection)回收掉;事實上也是如此,一旦被記憶體回收行程(garbage collection)掃描到就即刻被其回收。主要用於追蹤記憶體回收行程的行為。虛引用和弱引用一樣,通常和引用隊列(Reference Queue)一起使用,當記憶體回收行程(garbage collection)回收弱引用關聯的對象前將其放入到引用隊列中,同樣的我們可以監聽這個隊列,一旦有新的虛引用被放入就執行我們預定好的程式。範例程式碼如下
  Person person = new Person();
  PhantomReference<Person> personPhantomReference = new PhantomReference(person);
其中的 personSoftReference 被稱為虛引用,引用的是 new Person() 這個對象;

Java 中的四種引用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.