g1和cms介绍(适合面试)

CMS垃圾回收器:

CMS是作用于老年代的并发垃圾回收器,使用标记清除算法,工作流程是:初始标记,并发标记,再次标记,并发清除

优点

  • 耗时最长的并发标记和并发清除阶段gc线程和用户线程是并发执行的,因此其STW时间短,适合对延迟有要求的任务

缺点:

  • CMS在老年代使用的是标记清除算法,会产生大量内存碎片
  • GC线程与用户线程并发执行,二者会抢占cpu,并且会产生浮动垃圾

初始标记阶段会发生短暂的stw,用于标记GCRoot对象能够直接到达的对象

并发标记阶段gc线程根据GCRoot对象标记可到到的存活对象,应用程序可以和gc线程并行进行,不需要stw

再次标记阶段会进行stw,目的是为了修正因为并发标记阶段应用程序和gc线程并发执行产生的浮动垃圾

并发清除阶段gc线程清除垃圾对象,gc线程和应用线程并发执行因此会产生浮动垃圾,在下一次gc清理该浮动垃圾

G1垃圾回收器:

G1垃圾回收器是一款可以同时管理新生代和老年代,在老年代使用标记整理算法,其最大的特点是将内存划分为多个大小相等region,每个region都可以作为伊甸区,survivor区,老年代

优点:

  • 老年代使用标记整理算法,不会产生内存碎片
  • 使用region,不会出现新生代或者老年代分配空间过大而造成浪费
  • 每次只选择垃圾对象多的region,而不是整个堆,大幅减少了STW时间(但region与region之间是有依赖关系的,g1维护了一个Remembered Set记忆集记录了region的依赖关系,只需要扫描关联的region,而不是整个堆)
  • 用于可预测停顿的模型,可以指定STW时间(也就是可预测停顿),比如在一小时内垃圾回收导致的"stop the world"时间不超过一分钟。
  • </
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: G1垃圾回收器是一种JVM垃圾回收算法,它的核心原理是尽量控制垃圾回收对系统造成的影响,并在优先的时间内回收尽可能多的垃圾对象,以实现可预测的停顿时间。\[1\] 在JVM中,还有其他几种常见的垃圾回收器算法,包括CMS(Concurrent Mark Sweep)和G1(Garbage-First)。CMS是一种并发垃圾回收器,它的优点是可以在应用程序运行的同时进行垃圾回收,减少停顿时间,但它的缺点是会产生碎片化问题。G1是一种基于区域的垃圾回收器,它的优点是可以在可控制的停顿时间内进行垃圾回收,并且可以有效地处理大内存堆,但它的缺点是在处理大量垃圾对象时可能会导致延迟增加。\[2\] 总的来说,G1垃圾回收器通过控制垃圾回收对系统的影响和优先回收垃圾对象的方式,实现了可预测的停顿时间。而CMSG1是常见的垃圾回收器算法,它们各自有不同的优点和缺点,适用于不同的场景。 #### 引用[.reference_title] - *1* [JVM-03:JVM垃圾收集器面试题](https://blog.csdn.net/xiaozhang960825/article/details/123488309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [垃圾回收篇~~面试题集](https://blog.csdn.net/weixin_43863054/article/details/119221703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值