chapter03_垃圾收集器与内存分配策略_3_垃圾收集算法

  • 标记——清除算法

    (1) 最__基础__的GC算法

    (2) 过程

    先把需要回收的对象标记上,然后统一回收所有被标记的对象

    (3) 问题

    1° 标记过程和清除过程的__效率都不高__

    2° 标记、清除之后会产生大量__内存碎片__,造成分配大对象是找不到空间,可能又会频繁诱发GC

  • 复制算法

    (1) 基础版本

    将内存__等分__成两块,每次对象分配都__只用其中一块__,GC时把用的那块内存中还存活的对象复制到另一块中

    (2) HotSpot中的进化版本

    将内存分为三块,Eden:Survivor1:Survivor2 = 8:1:1,每次对象分配时,只使用Eden块和其中一块Survivor,然后GC时把存活的对象都复制到另一块Survivor中

    注° 8:1:1的比例是经验数据,有时可能存在另一块Survivor装不下存活对象的情况,此时需要__依赖其他内存(老年代)进行分配担保__

  • 标记——整理算法

    (1) 算是__标记——清除算法的进化版__

    (2) 过程

    先把需要回收的对象标记上,然后用指针的方式,把存活的对象都对齐到一端,这样就不会出现内存碎片了

  • 分代收集算法

    (1) 先把Java堆的内存空间分为__新生代__和__老年代__

    (2) 新生代的特点是每次都有大批对象诞生和死亡,并且有老年代作为__内存担保__,所以应该用__复制算法__

    (3) 老年代的特点是对象存活率高,并且再没有额外的内存空间帮它担保,所以应该用__标记-清除算法__或__标记-整理算法__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值