【JVM】如何区分新生代和老年代?空间分配担保?CMS回收过程?

本文介绍了JVM中新生代和老年代的区分,通常新生对象在Eden区,比例为8:1:1。新生代使用复制算法,因对象存活率低;老年代则采用标记清除或标记整理,避免高存活率导致的复制效率低。此外,探讨了空间分配担保策略,并详细解析了CMS(Concurrent Mark Sweep)的垃圾回收过程。
摘要由CSDN通过智能技术生成

1、如何区分新生代和老生代?划分比例?

参考书籍:《深入理解Java虚拟机》
在经典分代的设计下,新生对象通常会被分配在新生代中,少数情况下(如对象大小超过一定阈值)也可能会直接分配在老年代。

新生代Eden区和两个survivor区的比例是8:1:1——参数:-XX:Survivor-Ratio=8
在这里插入图片描述

2、空间分配担保?

在这里插入图片描述

3、为什么新生代用复制,老年代用标记清除或者标记整理

Q1:为什么新生代用标记-复制?
A1:因为新生代中的对象熬不过第一轮收集,存活的对象较少。

Q2:为什么老年代用标记-清除/标记-清理?

  1. 标记-复制算法在对象存活率较高时需要进行较多的复制操作,效率会降低。
  2. 如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都存活的极端情况。

4、CMS(Concurrent Mark Sweep)的过程

用的是标记-清理算法。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值