下面本人將對四種引用做解釋。 spa
強引用(Strong Reference) 對象
指在代碼中廣泛存在的,相似「Object obj = new Object()」的引用,只要強引用還存在,GC(垃圾收集器)永遠不會回收掉被引用的對象。 內存
軟引用(Soft Reference) 引用
用來描述一些還有用但並不是必需的對象,對於軟引用關聯的對象,在系統將要發生內存溢出異常以前,將會把這些對象列進回收範圍以內進行第二次回收。若是此次回收仍是沒有足夠的內存,纔會拋出內存溢出異常。JDK1.2後,使用Soft Reference類實現軟引用。 im
弱引用(Weak Reference) 異常
也是用來描述非必需對象的,可是它的強度比軟引用弱了一些,被弱引用關聯的對象只能生存到下一次垃圾收集發生以前。當垃圾收集器工做時,不論當前內存是否足夠,都會回收掉只被弱引用關聯的對象。JDK1.2後,使用Weak Reference類實現弱引用。 時間
虛引用(Phantom Reference) ant
也稱爲幽靈引用、幻影引用,這種引用的最弱。一個對象是否有虛引用的存在,徹底不會對其生存時間構成影響,也沒法經過虛引用來建立一個對象的實例。爲一個對象設置虛引用關聯的惟一目的就是能在這個類被垃圾收集器回收時受到一個系統通知。JDK1.2後,使用Phantom Reference類實現虛引用。 工作