Java - 四種引用型別及應用場景
阿新 • • 發佈:2022-03-15
1. 強引用
new 一個物件的時候,就是強引用
Object object = new Object();
只要強引用存在,垃圾回收就不會回收該物件,記憶體不足時會丟擲OOM。
2. 軟引用
定義:非必須,但仍有用的物件。記憶體不足時才會回收。
軟引用的使用
Object object = new Object();
SoftReference<Object> softReference = new SoftReference<>(object)
應用場景:快取
3. 弱引用
定義:不管記憶體狀態如何,總會被回收的物件。
弱引用的使用
Object object = new Object(); WeakReference<Object> weakReference = new WeakReference<>(object);
應用場景:Java原始碼中的java.util.WeakHashMap
中的key
就是使用弱引用。
4. 虛引用
定義:虛引用與沒有引用關係一樣,隨時會被回收。
虛引用必須和引用佇列一起使用
public class PhantomReference<T> extends Reference<T> { /** * Returns this reference object's referent. Because the referent of a * phantom reference is always inaccessible, this method always returns * <code>null</code>. * * @return <code>null</code> */ public T get() { return null; } public PhantomReference(T referent, ReferenceQueue<? super T> q) { super(referent, q); } }
應用場景:物件銷燬前的一些操作,比如說資源釋放等。