Java中的引用
阿新 • • 發佈:2020-07-12
在Java虛擬機器中,如果reference型別的資料中儲存的數值代表的是另外一塊記憶體的起始地址,就稱這塊記憶體代表著一個引用。一共有4類引用:
- 強引用(Strong Reference)
類似Object obj = new Object()
這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用的物件。
- 軟引用(Soft Reference)
軟引用是用來描述一些還有用但並非必需的物件。對於軟引用關聯著的物件,在系統將要OOM之前,將會把這些物件列僅回收範圍中進行二次回收。
- 弱引用(Weak Reference)
弱引用也是用來描述非必需物件的,但是它的強度比軟引用更弱一些,被弱引用關聯的物件只能生存到下一次GC發生之前。ThreadLocal
- 虛引用(Phantom Reference)
虛引用也稱為幽靈引用或者幻影引用,它是最弱的一種引用關係。一個物件是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來取得一個物件例項。為一個物件設定虛引用關聯的唯一目的就是能在這個物件被收集器回收時收到一個系統通知。