java 垃圾收集(GC)

判断对象是否存活的算法

在java中,对象是否存活取决于 finalize()方法,但是不建议重写

1.引用计数算法:每被引用一次,计数器+1
	难以解决循环引用的问题,就是假如两个对象互相引用已经不会再被其它其它引用,导致一直不会为0  就无法进行回收
2.可达性算法:搜索所经过的路径称为引用链,当一个对象到GC Roots没有任何引用跟它连接则证明对象是不可用的
	①虚拟机栈(栈桢中的本地变量表)中的引用的对象,就是平时所指的java对象,存放在堆中。
	②方法区中的类静态属性引用的对象,一般指被static修饰引用的对象,加载类的时候就加载到内存中。
	③方法区中的常量引用的对象,
	④本地方法栈中JNI(native方法)引用的对象

判断完对象是否存活后,收集垃圾的算法

举个形象的例子:假如有100人出生在Eden区,这100人慢慢长大,赚钱发家致富,进入到S0区,GC在区域空间逐渐满的时候会不定期的来调查每个人的价值,于是,把60个有价值的人克隆送到了S1区,S0区的所有生命都干掉,就这样过了一断时间,GC又来S1区调查60个人的价值,发现只有20人有价值,于是又复制到了S0区,S1区的所有都干掉,就这样,周而复始,在这周而复始的期间,有的一直存活,活到了15岁,于是把它放到了老年代区域。
1.标记/清除算法【最基础】
Minor GC
发生于 新生代 eder区 
2.复制算法
3.标记/整理算法
jvm采用`分代收集算法`对不同区域采用不同的回收算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值