Java中引用类型,应用场景?

297 阅读2分钟

唐诗开篇,与文无关。

              

                             --李峤

解落三秋叶,能开二月花。

过江千尺浪,入竹万竿斜。


引用类型

Java中引用类型从强到弱分为:

强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)。

使用场景以及垃圾回收

  • 强引用:强引用指的是通过new对象创建的引用,GC(Garbage Collection)垃圾回收器是不会回收强引用指向的对象的(即便内存不足抛出(OOM)OutOfMemory也不会回收)。

示例:

Object obj = new Object();

  • 软引用:软引用是通过SoftRefrence来实现的, 其生命周期比强引用短,在内存不足的时候,垃圾回收器会回收软引用引用的对象。

常用于常用于一些缓存信息,内存不足是就被回收释放。

示例:

SoftReference<Object> softObj = new  SoftReference<>();

  • 弱引用:弱引用是通过WeakReference来实现的,其生命周期比软引用还短,垃圾回收器是要扫描到弱引用对象就会回收。

示例:

WeakReference<Object> weakObj = new WeakReference<>();


  • 虚引用:(不怎么用)虚引用是通过FanttomRefrence来实现的,它的生命周期最短,随时可能被回收。如果一个对象只被虚引用引用,我们无法通过虚引用来访问这个对象的任何属性和方法。它的作用仅仅是保证对象在finalize后,做某些事情。虚引用常见的使用场景是跟踪对象被垃圾回收的活动,当一个虚引用关联的对象被垃圾回收器回收之前会收到一条系统通知。

本篇笔记参考:

微信公众号文章: https://mp.weixin.qq.com/s/ATJZouNFYg88mucgP_OH6Q