在JDK1.2之後,java將引用分爲四種,引用強度依次逐漸減弱
- 強引用(Strong Reference)
- 軟引用(Soft Reference)
- 弱引用(Weak Reference)
- 虛引用(Phantom Reference)
強引用(Strong Reference)
- 強引用就是指在程序代碼之中普遍存在的,類似Object obj = new Object() ,這類的引用
- 只要強引用還存在,垃圾收集器永遠不會回收被引用的對象
軟引用(Soft Reference)
- 軟引用是用來描述一些還在用但是並非必需的對象
- 對於軟引用關聯着的對象,在系統將要發生內存溢出異常之前,將會把這些對象列進回收範圍之中進行第二次回收
- 如果這次回收後還沒有足夠的內存,纔會拋出內存溢出異常
弱引用(Weak Reference)
- 弱引用也是用來描述非必需對象的,但是它的強度比軟引用更弱一些,被弱引用關聯的對象只能生存到下一次垃圾收集器發生之前
- 當垃圾收集器工作時,無論是當前內存是否足夠,都會回收掉只被弱引用關聯的對象
虛引用(Phantom Reference)
- 虛引用也稱爲幽靈引用或者幻影引用,他是最弱的一種引用關係
- 一個對象是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來取得一個對象實例
- 爲一個對象設置虛引用關聯的唯一目的就是能在這個對象被收集器回收時收到一個系統通知
-----------------------------本篇結論出自《深入理解java虛擬機》