Java引用的强度

博客介绍了Java的四种引用类型,包括强引用、软引用、弱引用和虚引用。强引用不会被系统回收,可能导致内存泄漏;软引用在内存紧张时被回收,可配合引用队列;弱引用在系统gc时被回收,也能配合引用队列;虚引用几乎无引用作用,用于跟踪垃圾回收进程。

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

4个级别:强引用、软引用、弱引用、虚引用。

1.强引用

建立方式: A  a = new A; 

                   A b =a;   用=号直接赋值。

无论如何都不会被系统回收

强引用可能导致内存泄漏。

2.软引用

建立方式: User u = new User();

                  SoftReference<User> userSoftRef = new SoftReference<>(u);

                   u=null;                               通过SoftReference类建立。

当内存资源紧张时,才会被回收,因此不会引起内存溢出。

可以配合引用队列使用,被回收时加入队列,用于跟踪对象回收情况。

3.弱引用

建立方式: User u = new User();

                  WeakReference<User> userSoftRef = new WeakReference<>(u);

                   u=null;                               通过WeakReference类建立。

建立方式: User u = new User();

                  PhantomReference<User> userSoftRef = new PhantomReference<>(u,queue);

                   u=null;                               通过PhantomReference类建立。

系统gc时,只要发现弱引用,就会进行回收。但由于垃圾回收器的线程优先级较低,并不一定能很块的发现持有弱引用的对象,因此弱引用也有可能存活较长时间。

可以配合引用队列使用,被回收时加入队列,用于跟踪对象回收情况。

4.虚引用

几乎和没有引用一样,且必须和引用队列一起用。作用在于跟踪垃圾回收进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值