5.Java的四种引用,强弱软虚,用到的场景。

在JDK1.2后,java对引用的概念进行了扩充。按照引用强度依次从强到弱分为:强引用、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference)用四种。



强引用:最常见的,不会被GC回收的对象,如 Object obj = new Object();


软引用:可有可无的对象,如果内存空间足够,GC就不会去回收这个对象,如果内存将要发生不足或者内存溢出异常时,就会回收软引用。如果这次回收还没有回收足够的空间,则回抛出内存溢出异常。 通常用SoftReference类实现软引用。

弱引用:也是描述可有可无的对象,和软引用不同的是,它的生命周期更短,被软引用关联的对象一定只能生存在下一次垃圾回收收集之前,在GC的过程中,一旦发现有弱引用的对象,不管当前内存空间是否足够,都会回收它的内存。 真是因为这个特性,所以弱引用常用于Map数据结构中,引用占用空间内存较大的对象。通常用WeakReference类实现软引用。


虚引用:也称幽灵引用,作用的唯一目的就是:给一个对象设置虚引用就是为了能在这个对象被收集器回收时可以收到一个系统通知。当GC准备回收一个对象时,发现它还有虚引用,就会在回收前,把虚引用加入到引用队列中,程序可以通过判断队列中是否加入虚引用来判断被引用的对象是否将要GC回收,从而可以在finalize方法中采取措施。通常用PhantomReference类实现软引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值