您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Java中有哪些引用方式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
強引用>軟引用>弱引用>虛引用
1.強引用
強引用,強在哪里?強在“JVM即使內(nèi)存溢出,也不會讓GC去隨便的回收強引用對象所占用的內(nèi)存空間”。其原因也容易理解,如果GC將上述的ref回收了,那么new Object()這個對象將毫無意義,后續(xù)所有使用ref的代碼也將出錯。
強引用,什么時候會失效?只有當(dāng)強引用的值被置為 null 或作用域失效后,GC才會將強引用對象納入被回收的范圍。
2.軟引用
當(dāng)JVM的內(nèi)存足夠時,GC對待軟引用和強引用的方式是一樣,即不會主動回收軟引用對象;但當(dāng)JVM的內(nèi)存不足時,GC就會去主動回收軟引用對象。
也可以這么理解:JVM只會在拋出OutOfMemory之前回收軟引用對象。
強引用可以直接通過關(guān)鍵字new產(chǎn)生,而軟引用需要借助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>類。當(dāng)GC進行垃圾回收時,無論是否當(dāng)時JVM的內(nèi)存是否充足,都會去主動回收弱引用對象。
4.虛引用
看完上述內(nèi)容,你們對Java中有哪些引用方式有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。