四种垃圾收集算法详解(JVM)

一、标记清除

1、原理

从根集合节点进行扫描,标记出所有的存活对象,最后扫描整个内存空间并清除没有标记的对象(即死亡对象)

标记后 (黑色:可回收 | 灰色:存活对象 | 白色:未使用 ) 

 清除后

2、适用场景

  • 存活对象较多的情况下比较高效

  • 适用于年老代(即旧生代)

3、实现过程

  • 标记阶段

    • 标记阶段从root开始递归地给堆里所有被引用对象打上标记。标记算法一般是用深度或者广度搜索,深度搜索可以压缩内存使用量,所以一般用深度

  • 清除阶段

    • collector也会遍历整个堆,然后回收释放所有没有打标的内存对象

    • 清除阶段,通过变量 sweeping 遍历堆,具体来说就是从堆首地址 $heap_start 开始,按顺序一个个遍历对象的标志位

    • 遍历回收过程中,我们用free_list空闲链表来链接所有被回收的空闲内存块

4、优化过程

  • multi-si

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ldwtxwh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值