垃圾回收算法

本文介绍了常见的垃圾回收算法,包括Mark-Sweep、Copying、Mark-Compact以及分代收集算法。详细讲解了各算法的特点和应用场景,如新生代、老年代的处理。同时,概述了不同垃圾收集器,如Serial、ParNew、Parallel Scavenge、CMS和G1,强调了CMS的并发标记和低停顿特性,以及G1的全堆内存分区策略。此外,讨论了Android系统中Dalvik和ART虚拟机的垃圾回收机制。
摘要由CSDN通过智能技术生成
常用的垃圾回收算法
    1.Mark-Sweep(标记-清除算法)

    标记-清除算法和它的名字一样,算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收被标记的对象。
    特点:1)标记-清除算法不会进行对象的移动,直接回收不存活的对象,因而会造成内存碎片
           :2)虽然内存回收了但是很可能会发生OOM,如上图所示,假设现在要分配10个格子内存,虽然内存回收了,总的可用内存足够大,但是并没有连续的10个格子可用

    2.Copying(复制算法)

    复制算法,它是将可用内存均分为两块,每次只用其中的一块。当这块内存用完了,就将还存活的对象复制到另一块内存区域,然后把已使用过的内存空间清理掉
    特点:1)不用考虑内存碎片情况。复制算法每次都是对某一块内存进行回收,做的是直接清除操作,所以只要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。但是复制算法代价是将内存缩小为原来的一半,持续复制长期存活的对象导致效率降低
            :2)复制回收算法在对象存活率较高的情况下会执行较多的复制操作,效率因此会降低,更关键的是,如果不想浪费50%的内存空间,就需要有额外的的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况

    3.Mark-Compact(标记压缩算法)
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值