认识JVM垃圾回收算法

标记清除算法

  • 标记阶段:标记出没有引用,满足回收条件的对象
  • 清除阶段:并不是把垃圾对象的内存清零。而是把垃圾对象所占用的内存的起始地址和结束地址记录下来,放在一个空闲地址列表中。等到下次分配新对象的时候就去空闲地址列表中找一份足够的空间容纳这个新对象。

**优点:**速度快(只需要把垃圾对象的内存起始和结束位置做记录就完成了,不需要做额外处理)

**缺点:**容易产生内存碎片

请添加图片描述
请添加图片描述

标记复制算法

将幸存区分为from和to两块区域,to区域保证一直是空的,将幸存对象都复制到from区

  • 标记:标记出没有引用,满足回收条件的对象
  • 复制:把可用对象复制到to区域中,交换from和to

**优点:**避免了内存碎片化

**缺点:**占用了双倍的内存空间

请添加图片描述
请添加图片描述

标记整理算法

  • 标记:把没有引用指向的对象标记出来
  • 整理:把可用对象整理到一起,避免了内存碎片化

**优点:**避免了内存碎片化

**缺点:**整理牵扯到了对象的移动,对象的内存地址也就需要改变。效率较低。

请添加图片描述
请添加图片描述

分代收集算法

结合了以上三种垃圾回收算法,形成了分代的垃圾回收机制,分为新生代和老年代。

  • 新生代中,每次收集都会有大量对象死去,所以可以选择”标记-复制“算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。

  • 老年代中,对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。

Minor GC和Full GC都会引发STW(Stop The World),Minor GC的暂停时间较短,而Full GC时间较长请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值