Java中强引用、软引用、弱引用、虚引用的使用场景

Java中强引用、软引用、弱引用、虚引用,引用强度从大到小依次是强软弱虚。


在这里插入图片描述

强引用

强引用是引用关系最强的一种引用,比如

User user = new User();

这种就是强引用。user和堆对象强关联,通常不会被GC回收(除非满足根不可达或者使用“User user = null” 解绑)。

使用场景:一般用于常规业务编码。


软引用

软应用(SoftReference)比强引用的引用强度低一点,当OOM内存溢出时,被回收。软引用可以和一个引用队列ReferenceQueue联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

使用场景:一般用于缓存,利用OOM时回收的特性设置缓存的场景。


弱引用

弱引用(WeakReference) 比软引用的引用强度低一点,在每次GC时,被回收。一般用于缓存,利用每次GC时回收的特性设置缓存的场景,比如ThreadLocal。


虚引用

虚引用(PhantomReference) 是最弱的一种引用,严格说没有引用。

使用场景:一般用于系统监控,监控GC什么时间进行了垃圾回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值