什么叫引用reference
Object o = new Object();
這個 o,我們可以稱之為對象引用,而 new Object()我們可以稱之為在內存 中產生了一個對象實例。
當寫下 o=null 時,只是表示 o 不再指向堆中 object 的對象實例,不代表這個對象實例不存在了。
強引用(strong reference)
強引用(strongreference)就是指在程序代碼之中普遍存在的,類似“Object obj=new Object()” 這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用的對象實例。
軟引用(soft reference)
一些有用但是並非必需,用軟引用關聯的對象,系統將要發生OOM之前,這些對象就會被回收。參見代碼:
弱引用(weak reference)
弱引用(weakreference)是一些有用(程度比軟引用更低)但是並非必需,用弱引用關聯的對象,只能生存到下一次垃圾回收之前,GC發生時,不管內存夠不夠,都會被回收。見代碼:
虛引用(phantom reference)
虛引用(phantomreference)幽靈引用,最弱,被垃圾回收的時候收到一個通知
一個對象 實例是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用 來取得一個對象實例。為一個對象設置虛引用關聯的唯一目的就是能在這個對象 實例被收集器回收時收到一個系統通知。