Java WeakReference是一種弱引用類(lèi)型,可以用來(lái)引用一個(gè)對(duì)象,但是在垃圾回收時(shí)會(huì)被自動(dòng)清除。WeakReference通常用來(lái)解決內(nèi)存泄漏問(wèn)題,比如緩存中的對(duì)象引用。
使用WeakReference時(shí),首先需要?jiǎng)?chuàng)建一個(gè)WeakReference對(duì)象,然后通過(guò)get()方法獲取被引用的對(duì)象。當(dāng)被引用的對(duì)象被垃圾回收時(shí),get()方法會(huì)返回null。
下面是一個(gè)簡(jiǎn)單的示例代碼,演示了如何使用WeakReference:
import java.lang.ref.WeakReference;
public class WeakReferenceExample {
public static void main(String[] args) {
String str = new String("Hello World");
WeakReference<String> weakRef = new WeakReference<>(str);
System.out.println("Weak reference value: " + weakRef.get());
str = null; // 清除強(qiáng)引用
System.gc(); // 手動(dòng)觸發(fā)垃圾回收
System.out.println("Weak reference value after garbage collection: " + weakRef.get());
}
}
在上面的示例中,創(chuàng)建了一個(gè)String對(duì)象并通過(guò)WeakReference進(jìn)行引用。在清除強(qiáng)引用后,手動(dòng)觸發(fā)垃圾回收,被引用的對(duì)象會(huì)被清除,get()方法返回null。
需要注意的是,WeakReference對(duì)象不會(huì)阻止被引用對(duì)象被垃圾回收,因此在使用時(shí)需要小心處理,避免引起NullPointerException。