强引用、软引用、弱引用、虚引用

Java中的引用包括强引用、软引用、弱引用和虚引用。强引用是默认引用类型,不会被GC回收。软引用在内存不足时会被回收,用于非必须但有用的对象。弱引用一旦无强引用关联,立即可被回收。虚引用最弱,仅在对象被回收时发挥作用,无法获取对象实例。
摘要由CSDN通过智能技术生成

在 Java 中,引用分为强引用、软引用、弱引用和虚引用四种类型。它们的特点和使用场景不同,下面我们来详细了解一下。

  • 强引用用于描述必须存在的对象,只要该对象被引用变量所引用,就不会被 GC 回收。

  • 软引用用于描述那些还有用但非必须的对象,在内存不足时会被回收。

  • 弱引用用于描述那些非必须的对象,并且它的生命周期比软引用更短,垃圾回收速度也更快。

  • 虚引用用于描述那些已经进入 finalization 队列,但是未被垃圾收集器真正回收的对象,它不能直接获取到对象的实例,只能在对象被回收时收到系统通知。

1.强引用(Strong Reference)

强引用是最常见的引用类型,在 Java 中默认的引用类型就是强引用。它是指在程序运行过程中,如果一个对象被一个强引用变量所引用,那么只要该变量还存在,垃圾收集器就不会回收这个对象。

示例代码:

Object obj = new Object(); // 强引用

 

2.软引用(Soft Reference)

软引用用于描述一些还有用但不必须的对象。当 JVM 内存不足时,垃圾收集器会根据软引用的引用关系来判断是否回收这些对象。

示例代码:

SoftReference<String> softRef = new SoftReference<>("hello"); // 软引用
String str = softRef.get();

 

3.弱引用(Weak Reference)

弱引用是用于描述非必须对象的,只要该对象没有被任何强引用变量或软引用变量引用,即使存在弱引用变量,垃圾收集器也会回收这个对象。

示例代码:

WeakReference<String> weakRef = new WeakReference<>("hello"); // 弱引用
String str = weakRef.get();

 

4.虚引用(Phantom Reference)

虚引用是最弱的一种引用类型,它只在被垃圾收集器回收时才会被使用。一个持有虚引用的对象,在任何时候都无法通过这个引用获得该对象的实例。可以使用虚引用监控对象的创建和销毁。

示例代码:

ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<Object>(new Object(), referenceQueue); // 虚引用
Object object = phantomRef.get();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值