Java中的引用是一種指向?qū)ο蟮闹羔槪煌贑++中的指針。Java的引用可以分為強(qiáng)引用和弱引用。強(qiáng)引用是指程序中普遍使用的對象引用,如果一個(gè)對象存在強(qiáng)引用,則垃圾收集器不會(huì)回收它。弱引用是指對一個(gè)對象的引用,如果這個(gè)對象只有弱引用,垃圾收集器會(huì)在下一次運(yùn)行時(shí)刻立即回收這個(gè)對象。
public class StrongReferenceExample { public static void main(String[] args) { Object obj = new Object(); Object strongRef = obj; // 強(qiáng)引用 obj = null; System.gc(); System.out.println("strongRef: " + strongRef); } } public class WeakReferenceExample { public static void main(String[] args) { Object obj = new Object(); WeakReference
以上是使用Java語言創(chuàng)建強(qiáng)引用和弱引用的代碼示例。在StrongReferenceExample類中,我們創(chuàng)建一個(gè)Object對象,并將它賦給一個(gè)強(qiáng)引用strongRef,然后將原來的引用變量設(shè)置為null。程序執(zhí)行過程中,垃圾收集器不會(huì)回收strongRef所引用的對象,所以strongRef會(huì)輸出對象的值。
在WeakReferenceExample類中,我們創(chuàng)建一個(gè)Object對象,并將它賦給一個(gè)弱引用weakRef,然后將原來的引用變量設(shè)置為null。程序執(zhí)行過程中,因?yàn)槲覀冎怀钟?strong>weakRef這個(gè)弱引用,垃圾收集器有可能在任意時(shí)間回收這個(gè)對象。在這個(gè)例子中,我們調(diào)用System.gc()方法通知垃圾收集器進(jìn)行垃圾回收,此時(shí)對象已經(jīng)被回收,因此weakRef.get()會(huì)返回null。