有這樣一類對象:當內存空間還足夠,則可保留在內存中;如果內存空間在gc之后還是非常緊張,則可拋棄這些對象。很多系統的緩存功能適合這樣的場景,所以jdk1.2以后
java將引用分為了強引用、軟引用、弱引用、虛引用四種,引用強度一次減弱。
- 強引用:類似Object a=new Object()這類,永遠不會被回收。
- 軟引用:SoftReference,當系統快要發生內存溢出異常時,將會把這些對象列入回收范圍進行二次回收,如果這次回收還是沒有足夠內存,則拋出內存溢出異常。
- 弱引用:比軟引用更弱,活不過下一次gc。無論當前內存是否足夠,下一次gc都會被回收掉。
- 虛引用:又叫幻引用,最弱,一個對象時候有虛引用的存在,不會對它的生存時間構成影響,唯一目的就是能在這對象被回收以后收到一個系統通知。。