Java四種引用包括強引用,軟引用,弱引用,虛引用。

jayqiu發表於2018-08-30

1. StrongReference --- 強引用

StrongReference 是 Java的預設引用實現, 它會盡可能長時間的存活於 JVM 內, 當沒有任何物件指向它時 GC 執行後將會被回收;
Object object = new Object();
上面的物件就是擁有強引用。
想要gc回收這個物件,就需要顯式的將object = null ,那麼物件就不存在引用關係
複製程式碼

2.SoftReference --- 軟引用

軟引用的強度是僅次於強引用的,如果一個物件只具有軟引用,則記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體空間不足了,
就會回收這些物件的記憶體。只要垃圾回收器沒有回收它,該物件就可以被程式使用。
軟引用可用來實現記憶體敏感的快取記憶體。   
在jvm記憶體不夠的時候就會回收擁有軟引用的物件,在jvm記憶體充足的時候不會回收
複製程式碼

我們可以使用java.lang.ref.SoftReference來建立軟引用;

String str=new String("abcd");                                     // 強引用  
SoftReference<String> softRef=new SoftReference<String>(str);     // 軟引用  
複製程式碼

當記憶體不足時,等價於: If(JVM.記憶體不足()) {
str = null; // 轉換為軟引用
System.gc(); // 垃圾回收器進行回收
}

3. WeakReference --- 弱引用

WeakReference 是一個弱引用, 當所引用的物件在 JVM 內不再有強引用時, GC 後 weak reference 將會被自動回
回收時機:在垃圾回收的時候;使用:同軟引用; 生命週期:GC後終止
複製程式碼

4.PhatomReference --- 虛引用

一個物件是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來獲取一個物件的例項。
為一個物件設定虛引用關聯的唯一目的就是能在這個物件被收集器回收時收到一個系統通知。
複製程式碼

Star 我的GitHub

# Back

相關文章