如何深入理解JAVA中的弱引用及其应用场景?

2026-05-21 08:262阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2000个文字,预计阅读时间需要8分钟。

如何深入理解JAVA中的弱引用及其应用场景?

定义+弱引用是使用WeakReference创建的引用,弱引用也是用来描述非必需对象的。它是比软引用更弱的引用类型。在开发GC时,只需发现弱引用,不管系统堆空间是否充足,都会将对象进行回收。

定义

弱引用是使用WeakReference创建的引用,弱引用也是用来描述非必需对象的,它是比软引用更弱的引用类型。在发生GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收。

说明

弱引用,从名字来看就很弱嘛,这种引用指向的对象,一旦在GC时被扫描到,就逃脱不了被回收的命运。

但是,弱引用指向的对象也并不一定就马上会被回收,如果弱引用对象较大,直接进到了老年代,那么就可以苟且偷生到Full GC触发前,所以弱引用对象也可能存在较长的一段时间。一旦一个弱引用对象被垃圾回收器回收,便会加入到一个引用队列中(如果有的话)。

弱引用对应的类为WeakReference,举个栗子:

String s = new String("Frank"); WeakReference<String> weakRef = new WeakReference<String>(s); s = null;

这里我们把s设置为null后,字符串对象便只有弱引用指向它。

阅读全文

本文共计2000个文字,预计阅读时间需要8分钟。

如何深入理解JAVA中的弱引用及其应用场景?

定义+弱引用是使用WeakReference创建的引用,弱引用也是用来描述非必需对象的。它是比软引用更弱的引用类型。在开发GC时,只需发现弱引用,不管系统堆空间是否充足,都会将对象进行回收。

定义

弱引用是使用WeakReference创建的引用,弱引用也是用来描述非必需对象的,它是比软引用更弱的引用类型。在发生GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收。

说明

弱引用,从名字来看就很弱嘛,这种引用指向的对象,一旦在GC时被扫描到,就逃脱不了被回收的命运。

但是,弱引用指向的对象也并不一定就马上会被回收,如果弱引用对象较大,直接进到了老年代,那么就可以苟且偷生到Full GC触发前,所以弱引用对象也可能存在较长的一段时间。一旦一个弱引用对象被垃圾回收器回收,便会加入到一个引用队列中(如果有的话)。

弱引用对应的类为WeakReference,举个栗子:

String s = new String("Frank"); WeakReference<String> weakRef = new WeakReference<String>(s); s = null;

这里我们把s设置为null后,字符串对象便只有弱引用指向它。

阅读全文