WeakReference與SoftReference

WeakReference與SoftReference均可以用來保存對象的實例引用,這兩個類與垃圾回收有關。
緩存

WeakReference是弱引用,其中保存的對象實例能夠被GC回收掉。這個類一般用於在某處保存對象引用,而又不干擾該對象被GC回收,一般用於Debug、內存監視工具等程序中。由於這類程序通常要求即要觀察到對象,又不能影響該對象正常的GC過程。ide

最近在JDK的Proxy類的實現代碼中也發現了Weakrefrence的應用,Proxy會把動態生成的Class實例暫存於一個由Weakrefrence構成的Map中做爲Cache。工具


SoftReference是強引用,它保存的對象實例,除非JVM即將OutOfMemory,不然不會被GC回收。這個特性使得它特別適合設計對象Cache。對於Cache,咱們但願被緩存的對象最好始終常駐內存,可是若是JVM內存吃緊,爲了避免發生OutOfMemoryError致使系統崩潰,必要的時候也容許JVM回收Cache的內存,待後續合適的時機再把數據從新Load到Cache中。這樣能夠系統設計得更具彈性。spa

相關文章
相關標籤/搜索