對於Java中的垃圾回收機制來講,對象是否被回收的標準在於該對象是否被引用。所以,引用也是JVM進行內存管理的一個重要概念。對象
Java中對象的引用通常有如下4種類型:隊列
1強引用 2軟引用 3弱引用 4虛引用內存
如下一一介紹其用法和區別內存管理
1強引用:在Java中最多見的就是強引用,把一個對象賦給一個引用變量,這個引用變量就是一個強引用。當一個對象被強引用變量引用時,它處於可達狀態,它是不可能被垃圾回收機制回收的,即便該對象之後永遠都不會被用到JVM也不會回收。所以強引用是形成Java內存泄漏的主要緣由之一。變量
2軟引用:軟引用須要用SoftReference類來實現,對於只有軟引用的對象來講,當系統內存足夠時它不會被回收,當系統內存空間不足時它會被回收。軟引用一般用在對內存敏感的程序中。內存泄漏
3弱引用:弱引用須要用WeakReference類來實現,它比軟引用的生存期更短,對於只有弱引用的對象來講,只要垃圾回收機制一運行,無論JVM的內存空間是否足夠,總會回收該對象佔用的內存。垃圾回收
4虛引用:虛引用須要PhantomReference類來實現,它不能單獨使用,必須和引用隊列聯合使用。虛引用的主要做用是跟蹤對象被垃圾回收的狀態。引用