JVM垃圾回收算法理解1之引用计数法快速理解

JVM垃圾回收引用计数法入门理解
引用计数法是历史最悠久的一种算法,
引用:假设一个对象A 中定义了一个B 对象中的属性这个称为A 引用B ;
在这里插入图片描述
原理: 对象B 引用对象A 那么对象A 的计数器就+1,同理被其他对象引用,计数器就+1 ,当对象B 引用失败了,那么对象A 的计数器就-1,当计数器值为0 时,gc就会将A 回收;
优点:实时性很高,不用等到内存不够用的时候才去垃圾回收,运行时根据对象的计数器是否为0来判断,当计数器为0 的时候就进行回收,在垃圾回收的整个过程中,应用不需要挂起,如果去申请内存不够就会报错outofmenber 内存溢出的错;并且在更新对象的计数器的时候 只会影响到该对象不会去扫描全部的对象;
缺点:每次对象引用的时都需要更新计数器有一定时间的开销;在内存够用的情况下 依然去判断计数器的值是否为0并更新,浪费cpu的资源;但是最致命的是:无法解决循环引用;

class TestA{
	public  TestB b;
}
class TestA{
	public  TestB b;
}
public class main{
	public static void main(Strings[] args){
		A a=new A();
		Bb =new B();
		a.b=b;
		b.a=a;
		a=null;
		b=null;
	}
}

在这里插入图片描述
这个时候a 和b 都为null ,对于gc来说 a和b都是为null可以被回收的,但是a 和b存在循环引用,这样的情况a和b用计数器的算法就永远不会被回收

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值