1. 強引用 Java中默認聲明的就是強引用,比如: Object obj = new Object(); obj = null; 只要強引用存在,垃圾回收器將永遠不會回收被引用的對象。如果想被回收,可以將對象置為null。
2. 軟引用(SoftReference) 在內存足夠的時候,軟引用不會被回收,只有在內存不足時,系統(tǒng)才會回收軟引用對象,如果回收了軟引用對象之后仍然沒有足夠的內存,才會跑出內存溢出異常。 byte[] buff = new byte[1024 * 1024]; SoftReference sr = new SoftReference<>(buff);
3. 弱引用(WeakReference) 進行垃圾回收時,弱引用就會被回收。
4. 虛引用(PhantomReference)
5. 引用隊列(ReferenceQueue) 引用隊列可以與軟引用、弱引用、虛引用一起配合使用。 當垃圾回收器準備回收一個對象時,如果發(fā)現(xiàn)它還有引用,就會在回收對象之前,把這個引用加入到引用隊列中。 程序可以通過判斷引用隊列中是否加入了引用,來判斷被引用的對象是否將要被垃圾回收,這樣可以在對象被回收之前采取一些必要的措施。