JAVA中的四种引用

1强引用
功能:一个对象如果只有强引用,那么垃圾回收器绝不会回收它,即使当内存不足是,JVM宁愿抛出内存不足的异常,也不会回收这些对象。
使用场景:我们平常大部分使用的场景都是使用了强引用,比如new创建对象,反射获得一个对象的People p = new People(“zsd”,10);
String s= new String("");
没有显性释放对象(s=null),JVM是不会回收该对象的

2软引用
功能:如果一个对象只具有软引用,则内存空间足够时,垃圾回收器就不会取回收它;
如果内存空间不足时,就会回收这些对象的内存
使用场景:这种可用于那种有可能会在创建后使用的对象,不过为了内存消耗会选择使用软引用,比如缓存
java中提供SoftReference类处理软引用

3弱引用
功能:弱引用和软引用的区别在于,只具有弱引用的对象拥有更短暂的生命周期,在垃圾回收器线程扫秒它的管辖的内存区域的过程中,一旦发现对象只具有弱引用,不管当前内存是否足够,都会回收他的内存。它比原因用的生命周期更短,和软引用相似。
使用场景:弱引用用于生命周期更短的,对内存更敏感的场景中,比如占用内存很大的Map,java.API中就提供了WeakHashMap的使用,就会使大Map被及时清理掉
java中提供给WeakReference类处理弱引用

4虚引用
功能:“虚引用”形同虚设,与其它几种引用不同,虚引用并不会决定对象的生命周期,如果一个对象仅持有虚引用的话,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收
使用场景;它的使用场景应该在判断一个对象是否被垃圾回收了。
java中提供PhantomReference类处理虚引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值