Java WeakReference如何使用

小樊
113
2024-07-12 16:01:28

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。

0