垃圾收集(GC) 算法

本文介绍了垃圾回收的三种主要算法:标记-清除、标记-压缩和复制算法。标记-清除算法在回收内存时可能导致碎片;标记-压缩算法优化了这个问题,尤其适用于存活对象多的场景;复制算法则适用于存活对象少的新生代,但当存活对象多时效率降低。此外,还提到了分代回收法,结合不同算法处理新老年代的垃圾回收问题。
摘要由CSDN通过智能技术生成

1.标记 -清除法

  a. 原理      “标记- 清除 Mark-Sweep )算法,如它的名字一样,算法分为 标记 清除 两 个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。也可以反过来标记不需要回收的对象。
问题:
i. 标记和清除两个过程效率不⾼,产⽣内存碎⽚导致需要分配较⼤对象时⽆法找到⾜够的连续内存⽽需要触发⼀次 GC 操 作

2. 标记-压缩法

原理 适合⽤于存活对象较多的场合,如⽼年代。它在标记 - 清除算法的基础上做了⼀些优化。标记阶段⼀样,但之后,将所 有存活对象压缩到内存的⼀端。之后,清除边界外所有的空间。
优点:
i. 解决了标记 - 清除算法导致的内存碎⽚问题和在存活率较⾼时复制算法效率低的问题

3.复制算法:

a. 原理 它将可用内存按容量划分为大小相等的两块 ,每次只使⽤其中⼀块,在垃圾回收时,将正在使⽤的内存中的存活对象复制到未使⽤的内存块中,之后清除正在使⽤的内存块中的所有对象,交换两个内存的⻆⾊,完成垃圾回收。
b. 问题
i. 不适⽤于存活对象⽐较多的场合,如⽼年代。

4.分代回收法:

a. 原理:根据对象存活周期的不同将内存划分为⼏块,⼀般是新⽣代和⽼年代,新⽣代基本采⽤复制算法,⽼年代采⽤标记清除算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值