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