Java中的四种引用

Java内存管理中,垃圾回收看对象是否有引用指向。Java提供了强引用、软引用、弱引用和虚引用四种强度不同的引用类型,目的是让程序员决定对象生命周期及利于JVM垃圾回收。文中分别介绍了四种引用的特点和创建方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。
Java中提供了四种强度不同的引用类型,Java中提供这四种引用类型主要有两个目的:

  1. 第一是可以让程序员通过代码的方式决定某些对象的生命周期;

  2. 第二是有利于JVM进行垃圾回收。

一、强引用(Strong Reference)

使用 new 一个新对象的方式来创建强引用。

Object obj = new Object();

只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null

obj = null;  //手动置null

这样一来,JVM就可以适时的回收对象了

二、软引用(Soft Reference)

被软引用关联的对象只有在内存不够的情况下才会被回收。
使用 SoftReference 类来创建软引用。

Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;  // 使对象只被软引用关联

三、弱引用(Weak Reference)

被弱引用关联的对象一定会被回收,也就是说它只能存活到下一次垃圾回收发生之前。无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。

Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;

四、虚引用(Phantom Reference)

虚引用又称为幽灵引用或者幻影引用,一个对象是否有虚引用的存在,不会对其生存时间造成影响,也无法通过虚引用得到一个对象。

为一个对象设置虚引用的唯一目的是能在这个对象被回收时收到一个系统通知。

使用 PhantomReference 来创建虚引用。

Object obj = new Object();
PhantomReference<Object> pf = new PhantomReference<Object>(obj);
obj = null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值