1. 程式人生 > >Java四種物件引用型別:強軟弱虛

Java四種物件引用型別:強軟弱虛

            JDK1.2之後,Java對引用的概念進行了擴充,將引用分為強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、虛引用(Phantom Reference)。這四種物件引用強度依次減弱。
  • 強引用
            強引用就是指在程式程式碼之中普遍存在的,類似“Object obj = new Object()"這樣的引用,強引用環境下,垃圾回收時需要嚴格判斷當前引用是否為強引用,若判斷為強引用,則不會被垃圾回收。當記憶體空間不足時,JVM寧願丟擲OOM錯誤,使程式異常終止,也不會隨意回收具有強引用關聯的物件來解決記憶體不足的問題。
  • 軟引用
            軟引用是用來描述一些還有用但並非必須的物件。軟引用一般被作為快取來使用,在垃圾回收時,虛擬機器會根據當前記憶體使用情況來決定是否對軟引用進行回收,如果系統剩餘記憶體比較緊張,則虛擬機器會回收軟引用所引用的空間,如果剩餘記憶體相對富餘,則不會進行回收。
  • 弱引用
            弱引用與軟引用類似,但是它的強度比軟引用更弱一些, 在進行垃圾回收時,無論當前記憶體是否足夠,都會回收掉只被弱引用關聯著的物件,因此其生命週期只存在於一個垃圾回收週期內。例如WeakHashMap就是一個以弱鍵實現的基於Hash表的Map,當某個鍵不再正常使用時,便自動移除其條目。
  • 虛引用
            虛引用也成為幽靈引用或者幻影引用,它是最弱的一種引用關係。為一個物件設定虛引用關聯的唯一目的就是能在這個物件被收集器回收時收到一個系統通知。