对象引用(强,软,弱,虚)

在JDK1.2之后,Java引入了四种引用类型以更好地控制对象生命周期:强引用、软引用、弱引用和虚引用。强引用是最常见的,不会被GC回收除非显式设置为null。软引用在内存不足时才会被回收,而弱引用在GC扫描时总会被回收。虚引用则像无引用,任何时候都可能被回收,常用于跟踪对象的回收活动。
摘要由CSDN通过智能技术生成

        在JDK1.2之前,一个对象只有两种状态"已被引用"和"未被引用" ,在JDK1.2后,为了使得程序能够更好的控制对象的生命周期,引入了对象特殊状态的四种引用,由强到弱分别是:强引用,软引用,弱引用,虚引用。

1.强引用

        在Java程序中,最常见的就是强引用,也是默认的引用类型,比如:Object object = new Object(),只要强引用的对象是可达的,JVM宁愿报OOM,也不会回收强引用,如果想要回收强引用,那么就将引用变量赋值为null,再合适的情况下垃圾回收就会收集,所以强引用也是造成内存泄露的主要原因

2.软引用

        软引用对应的实现类是SoftReference,我们可以将一个对象作为参数来创建SoftReference对象,这样这个对象就是软引用对象了,如果垃圾回收一次之后发现内存依然不够,才会回收软引用

3.弱引用

        弱引用对应的实现类是WeakReference,当垃圾回收器扫描到弱引用时,无论此时的内存空间是否足够,都会回收弱引用

4.虚引用

        虚引用对应的实现类是PhantomReference,虚引用就和没有任何引用一样,在任何时候都可能被垃圾回收,虚引用必须和引用队列一起使用,主要用来跟踪对象被垃圾回收的活动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值