java——强引用、软引用、弱引用、虚引用区别

本文探讨了Java中不同类型的引用(强引用、软引用、弱引用和虚引用)及其如何影响垃圾回收机制。每种引用类型都有其特定的行为模式,并在内存管理中扮演着不同的角色。

我自己的理解:

 

其实 ,这个就是针对java的对象,每个对象都在堆上都占有自己的内存空间

然后,关键是垃圾回收机制什么时候回收这个对象。(为什么要被回收,是因为每个应用程序的内存有限)

分情况考虑:

1.强引用:

当这个对象被强引用时,就算出现空间内存不足,也要出现oom的情况

2.软引用:

当这个对象被软引用时,一般垃圾回收器不会管它,但是出现空间内存不足,就要被回收。

3.弱引用:

当这个对象被弱引用时,一般还没有出现空间内存不足的情况时,如果垃圾回收器线程扫描到它,就会被回收。

4.虚引用:

当这个对象仅仅被虚引用时,该对象可以在任何时候被垃圾回收。

虚引用主要是用来跟踪对象被垃圾回收的活动。

虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。

当一个对象被回收时,如果发现还有一个虚引用,在回收该对象前,就要把这个虚引用加入到与之相关的引用队列中。

程序通过了解该引用队列,可以判断该对象是否被回收。相当于日志追踪。

 

转载于:https://www.cnblogs.com/gengen1990/p/6568409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值