強引用是最廣泛的引用,java垃圾回收機制不會回收強引用的對象。它的實現方式以下:java
Object object = new Object();
只有當object這個對象使用完畢,失去引用後纔可能會被回收。可是若是object是一個全局變量,那麼只能經過object=null;強制使該對象失去引用,不然除非程序結束,該對象不會被回收。spa
當使用軟引用時,除非出現內存不足,不然不會觸發回收機制。它的實現方式以下:線程
Object object = new Object(); SoftReference<Object> soft = new SoftReference<Object>(object);
當使用弱引用時,每次內存回收線程運行時,該對象都會被回收。它的實現方式以下:code
Object object = new Object(); WeakReference<Object> weakReference = new WeakReference<Object>(object);
當使用虛引用時,在任什麼時候刻該引用都有可能會被回收,至關於未被引用。虛引用主要用於跟蹤對象被垃圾回收的活動。 當回收線程運行準備回收虛引用的對象時,會將該對象放入對應的引用隊列中。經過監控這個引用隊列,能夠在對象被回收前進行一些處理。虛引用必須與ReferenceQueue一塊兒使用。它的實現方式以下:對象
ReferenceQueue<Object> queue = new ReferenceQueue<>(); Object object = new Object(); PhantomReference<Object> phantomReference = new PhantomReference<>(object,queue);