java中的四種引用類型
一、強引用
強引用是最常見的,把一個對象賦給一個引用變量,這個引用變量就是一個強引用。當一個對象被強引用變量引用時,他處於可達狀態,它是不會被GC回收的,即使該對象以后永遠不會被用到JVM也不會回收。因此強引用是造成Java內存泄漏的主要原因之一
二、軟引用
軟引用需要用SoftReference類來實現,對於只有軟引用的對象來說,當系統內存足夠時它不會被回收,當系統內存空間不足時它會被回收。當系統內存空間不足時它會被回收。軟引用通常用在對內存敏感的程序中。緩存數據,提高數據的獲取速度
三、弱引用
弱引用需要用WeakReference類來實現,它比軟引用生存期更短,對於只有弱引用的對象來說,只要垃圾回收機制一運行,不管JVM內存空間是否足夠,總會回收該對象占用的內存。短時間緩存某些次要數據。
四、虛引用
虛引用需要PhantomReference類來實現,它不能單獨使用,必須和引用隊列聯合使用,虛引用的主要作用是跟蹤對象被垃圾回收的狀態。
5 引用隊列(ReferenceQueue)
效果:引用隊列可以配合軟引用、弱引用及幽靈引用使用,當引用的對象將要被JVM回收時,會將其加入到引用隊列中。
應用:通過引用隊列可以了解JVM垃圾回收情況
