Java 中的四种引用
垃圾收集器與內存分配策略參考目錄:
1.判斷Java 對象實例是否死亡
2. Java 中的四種引用
3.垃圾收集算法
4. Java9中的GC 調優
5.內存分配與回收策略
在進行垃圾回收之前,虛擬機判定對象是否需要回收都與”引用”相關。在jdk1.2 之前,Java 關于引用的定義很傳統:如果reference 類型的數據存儲的數值代表另一塊內存的起始地址,就稱這塊內存代表著一個 引用。這種定義看似很純粹,但是卻是很狹隘的,因為一個對象被定義出來只有被引用或者沒有被引用兩種狀態。我們希望能這樣描述一類對象:當內存空間還足夠時,則保留在內存中;如果內存在進行垃圾回收之后仍然很緊張,則拋棄這些對象。很多系統的緩存功能都符合這樣的應用場景。
于是在jdk1.2 之后,Java 對引用的概念進行了擴充,將引用分為:強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference)這四種,這四種引用關系逐漸減弱。
- 強引用是指在代碼中普遍存在的,類似 “Object obj = new Object();” 這類的引用,只要強引用還存在,垃圾回收器永遠不會回收掉引用的對象。
- 軟引用是用來描述一些還有用但并非是必要的對象。對于軟引用著的對象,在系統將要發生內存溢出異常之前,將會把這類對象列進回收范圍進行第二次的回收。如果這次回收仍然沒有足夠的內存,就會拋出內存溢出異常。在jdk1.2 中提供了SoftReference 類來實現軟引用。
- 弱引用也是用來描述非必須對象的,但是它的強度比軟引用更弱一些,被弱引用關聯的對象只能生存到下一次的垃圾回收之前。當垃圾收集器工作時,無論當前內存是否足夠,都會回收掉只被弱引用關聯的對象。在jdk1.2 中提供了WeakReference 類來實現弱引用。
- 虛引用也被稱為幽靈引用或幻影引用,它是最弱的一種引用關系。一個對象是否有虛引用的存在,完全不會對其生存時間造成影響,也無法通過虛引用來取得一個對象的實例。為一個對象設置虛引用關聯的唯一目的就是能在這個對象被收集時收到一個系統通知。在jdk1.2 中提供了PhantomReference 類來實現虛引用。
??????現在只是通過書籍了解到相關的四種引用關系并沒有在實際的代碼中遇到有關軟引用、弱引用與虛引用的實例,如果以后工作了能接觸到有關的實際案例再來談談一些看法吧。
????????????????????????????????????????????????????????????????????????????????????????????????????????????參考書籍:
????????????????????????????????????????????????????????????????????????????????????????????????????????????????《深入理解Java 虛擬機》周志明 著
總結
以上是生活随笔為你收集整理的Java 中的四种引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项羽虞姬毛不易歌词(项羽虞姬毛不易)
- 下一篇: 特种兵在都市夜十三有声小说原声(特种兵在