溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中有哪些引用方式

發布時間:2021-06-30 17:34:24 來源:億速云 閱讀:144 作者:Leah 欄目:大數據

今天就跟大家聊聊有關Java中有哪些引用方式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

強引用>軟引用>弱引用>虛引用

1.強引用

強引用,強在哪里?強在“JVM即使內存溢出,也不會讓GC去隨便的回收強引用對象所占用的內存空間”。其原因也容易理解,如果GC將上述的ref回收了,那么new Object()這個對象將毫無意義,后續所有使用ref的代碼也將出錯。

強引用,什么時候會失效?只有當強引用的值被置為 null 或作用域失效后,GC才會將強引用對象納入被回收的范圍。

2.軟引用

當JVM的內存足夠時,GC對待軟引用和強引用的方式是一樣,即不會主動回收軟引用對象;但當JVM的內存不足時,GC就會去主動回收軟引用對象。

也可以這么理解:JVM只會在拋出OutOfMemory之前回收軟引用對象。

強引用可以直接通過關鍵字new產生,而軟引用需要借助JDK提供的java.lang.ref.SoftReference<T>。

在軟引用、弱引用和后面要講的虛引用中都有一個get()方法(實際都是繼承父類Reference而來),此方法用于獲取引用所指向的引用對象。如下,就是通過get()方法獲取了軟引用所指向的ObjectDemo對象。

class ObjectDemo {
   public void method(){}
}

public class ReferenceDemo {
   public static void main(String[] args) throws Exception {
       SoftReference<ObjectDemo> softReference = new SoftReference<>(new ObjectDemo());
       ObjectDemo obj =  softReference.get();
  }
}

3.弱引用

弱引用在JDK中是指java.lang.ref.WeakReference<T>類。當GC進行垃圾回收時,無論是否當時JVM的內存是否充足,都會去主動回收弱引用對象。

4.虛引用

虛引用在JDK中是指java.lang.ref.PhantomReference<T>類,虛引用也稱為幻影引用或幽靈引用。虛引用是所有引用級別中最低的一個,甚至于“是否使用虛引用對于一個對象本身來說都沒有任何區別”,并且我們也無法通過虛引用來獲取一個對象實例。虛引用一般會和引用隊列(ReferenceQueue)一起使用,其價值在于:當GC在回收某個對象時,如果發現這個對象還存在虛引用,就會在回收此對象前先把這個虛引用存放到相應的引用隊列中,并且在這個虛引用出隊前,不會回收對應的虛引用對象。因此,我們可以通過分析引用隊列中虛引用的數量,來估算GC回收的頻率,或者趕在虛引用對象在被回收前進行一些額外的操作。

看完上述內容,你們對Java中有哪些引用方式有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女