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

相关文章
相关标签/搜索