色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java弱引用和軟引用的區(qū)別

林玟書1年前8瀏覽0評論

Java中的引用分類有四種,分別是強引用、軟引用、弱引用和虛引用。其中,強引用是我們默認所使用的引用,它直接指向?qū)ο蟛⒃诓辉偈褂脮r不會被自動回收。而軟引用和弱引用是在Java1.2版本中引入的兩種新型引用,它們的特性則是在內(nèi)存不足時才會被垃圾回收自動回收。下面簡單介紹一下弱引用和軟引用的區(qū)別。

首先,我們需要明確的是,軟引用和弱引用都是通過java.lang.ref包中的SoftReference和WeakReference類實現(xiàn)的。這兩種引用都可以起到一定程度上的內(nèi)存優(yōu)化作用,適合于那些大對象或生命周期較短的對象。

軟引用是用來描述那些還有用但非必須的對象。如果一個對象只有軟引用,則內(nèi)存空間充足時,它不會被回收;如果內(nèi)存空間不足了,就會被回收。在Java中,我們可以通過SoftReference來實現(xiàn)軟引用。例如:

public class SoftReferenceTest {
public static void main(String[] args) {
SoftReferencesrf = new SoftReference<>(new StringBuffer("Hello"));
System.out.println(srf.get());  // Hello
}
}

弱引用則是一種更弱的引用,只要存在垃圾回收機制的時候,無論當前內(nèi)存是否充足,都會被回收。在Java中,我們可以通過WeakReference來實現(xiàn)弱引用。例如:

public class WeakReferenceTest {
public static void main(String[] args) {
WeakReferencewrf = new WeakReference<>(new StringBuffer("Hello"));
System.out.println(wrf.get());  // Hello
}
}

經(jīng)過上述代碼執(zhí)行后,軟引用所指向的對象會有一定的生命力,而弱引用所指向的對象則是隨時有可能被回收的。再來看一個關(guān)于弱引用的例子:

public class WeakReferenceTest {
public static void main(String[] args) {
WeakReferencewrf = new WeakReference<>(new StringBuffer("Hello"));
System.out.println(wrf.get());  // Hello
System.gc();
System.out.println(wrf.get());  // null
}
}

執(zhí)行結(jié)果可以看出,線程在一次垃圾回收之后,弱引用指向的對象就被釋放了。