天天看點

java的4種引用類型

StrongReference(強引用)

寫法:

Test test = new Test()

這是最常見的引用類型,也是最牢固的引用類型,當jvm發生gc時,對象被引用不會被gc回收,jvm記憶體滿了将要發生OOM(out of memory)的時候,強引用類型也不會被回收

SoftReference(軟引用)

寫法:

SoftReference<String> softReference = new SoftReference<>(new String("Hello World"));

較強引用來說,軟引用在發生gc時,被引用的對象不會被回收,當記憶體滿時,将要發生OOM時,gc會回收軟引用的對象

WeakReference(弱引用)

寫法:

WeakReference<String> weakReference = new WeakReference<>(new String("Hello World"));

弱引用在發生gc時,就會被gc回收,不管記憶體用了多少,弱引用最長的生命周期是兩次gc的間隔時間

PhantomReference(虛引用,幻引用)

寫法:

ReferenceQueue<String> referenceQueue = new ReferenceQueue<>(); PhantomReference<String> phantomReference = new PhantomReference<>(new String("Hello World"), referenceQueue);

虛引用和上面兩種引用有一點點小差別,多了一個依賴隊列。虛引用并不會決定對象的生命周期,有他沒他都一個樣,無法通過虛引用擷取對象。