java的引用类型_Java 引用类型

Java在1.2之后引入了强引用、软引用、弱引用和虚引用四种引用类型,以解决对象生命周期管理的问题。强引用是最常见的引用,不会被GC回收。软引用在内存充足时不回收,内存不足时会被清理。弱引用不会阻止对象被回收,只要有弱引用存在即可。虚引用则不直接获取对象,主要用来在GC回收前获得通知。
摘要由CSDN通过智能技术生成

问题:

在JDK1.2以前,对象只有“被引用”和“不被引用”两种状态,对于一些“现在没用,但不确定以后是否有用”的对象,在这种场景下只能被定义为“不被引用”,因而会被垃圾回收。

一旦将来使用到该对象,就会发现这个对象找不到了。

我们希望描述这样的一类对象:如果内存空间充足,则保持在内存中;如果垃圾回收后的内存依旧很紧张,则释放这些对象占用的内存。(比如系统的缓存功能)

4种引用类型:

JAVA在1.2之后引入了4种引用类型:强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference),虚引用(Phantom Reference)。4种引用的强度依次递减。

强引用: 就是普通的引用,如StringBuffer sb = new StringBuffer(), 只要强引用存在,就不会被垃圾回收;

软引用:只要内存空间足够,就不会释放软引用的对象;当系统将要发生内存溢出时,才会将软引用的对象列入回收范围,JDK1.2使用SoftReference类实现软引用;

弱引用:弱引用不会影响对象的生命周期,垃圾回收器对弱引用的对象会当成普通对象处理(只要没有强引用就可以被回收);JDK1.2使用WeakReference类实现弱引用;

虚引用:虚引用不会影响对象的生命周期,无法通过虚引用获取对象实例;创建虚引用的目的是可以在对象被垃圾收集器回收时收到一个系统通知。JDK1.2使用PhantomReference类实现虚引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值