Java中的引用(强引用、软引用、弱引用、虚引用)

  • 强引用:常见的Object obj = new Object();只要强引用还在,垃圾回收器就永远不会回收掉此对象。
  • 软引用:用来描述一些有用但非必要的对象。在内存即将发生泄露以前,会把这些对象列进回收范围之中进行二次垃圾回收。若是此次回收尚未足够的内存,那么才会发生内存溢出。软引用能够用来实现内存敏感的高速缓存。
  • 弱引用:用来描述非必要的对象,被弱引用关联的对象只能活到下次垃圾回收以前。当进行垃圾回收时,不管内存是否足够,都将回收被弱引用关联的对象。
  • 虚引用:最弱的一种引用关系。没法经过虚引用获取一个对象。一个对象是否有虚引用,都不会对其生命周期构成影响。其惟一目的就是在垃圾回收时收到一个系统通知。它和软引用和弱引用不一样的是:虚引用必须和引用队列联合使用。在垃圾回收准备回收一个对象时,发现这个对象还有虚引用,那么就会在回收对象以前,把这个虚引用加入到与之关联的引用队列当中。若是程序发现某个虚引用已经被加入到引用队列,那么就能够在所引用的对象内存被回收以前采起必要的措施。

软引用、弱引用的使用场景原理分析:实现内存敏感的高速缓存。缓存

相关文章
相关标签/搜索