JVM系列:垃圾收集算法

8 篇文章 0 订阅

复制算法:
适用于“朝生夕死”的数据,每次收集将存活的对象一次性地复制到另外一块空间上,优点是效率高、实现简单,缺点是总有一块空内存作为轮换备份,所以新生代按8:1:1分配eden和survivor,这样浪费的只有1/10的部分了。如果survivor区不够复制过去,那么就需要老年代作“分配担保”了。
标记清除算法:
垃圾回收的时候首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,缺点是:标记和清除的效率都不高、内存碎片。
标记整理算法:
为了解决内存碎片的问题,标记完之后不是直接清理对象,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。缺点是效率会更低。
标记过程:
标记分为两次标记:
(1)jvm使用的是可达性分析算法,从GCroots对象作为起始点,向下搜索,当一个对象到GCRoots没有引用链相连,则证明此对象是不可用的,进行第一次标记。
(2)做一次筛选,筛选条件是对象是否有必要执行finalize()方法,如果对象没有覆盖finalized()方法,或者finalize()方法已经被虚拟机调用过,则认为“没有必要执行”。如果虚拟机认为有必要执行finalize()方法,那么这个对象会放到一个队列中,有一个线程会去执行它。进行第二次标记。两次标记完成后就会认为这个对象是可以清除的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值