强软弱虚,用到的场景

  1. 强引用

内存不足时,垃圾回收器也绝不会回收具有强引用的对象,然后内存溢出并报错OOM

经典的强引用

Object oj=new Object();

这时不管Object对象是否被使用,垃圾回收器永远都不会回收这个强引用所指向在堆中的Object对象,以防内存不足时造成的困扰,我们可以将它设置为null

oj=null;//变成弱引用

方便GC算法查找未被使用的对象

  1. 软引用

内存不足时,垃圾回收器就会回收只具有软引用的对象,反之内存足够的话,就不会回收

SoftReference st=new SoftReference(Object);
if(st.get()!=null){
	//对象没被回收
}else{
	//对象已经被回收了
}

内存被回收的时候,就是以下过程

if(JVM内存不足){
	ob=null;
	System.gc();
}
  1. 弱引用

内存不管是否充足,垃圾回收器一定会回收只具有弱引用的对象

WeakReference wk=new WeakReference(Object);

跟软引用一样,但是触发回收的条件不同,弱引用被垃圾回收器扫描到就会回收

  1. 虚引用
    此类引用正如其名,很虚,很没用,只是在垃圾回收器准备回收具有虚引用的对象时,会象征性的把该对象也加入到引用队列当中

当垃圾回收器准备回收一个具有引用的对象时,就会先将对象关联的引用添加到ReferenceQueue引用队列中,因此可以通过判断引用是否在引用队列来判断对象是否正在被GC回收

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值