JVM-垃圾回收器分析对比

垃圾回收器进行回收时,会停止Java系统的所有工作线程,禁止创建对象,进入“Stop the World”状态。所以无论是新生代GC还是老年代GC,都要避免频率过高、持续时间过长,影响系统正常运行。

1、新生代垃圾回收器–ParNew

使用多线程垃圾回收机制,默认设置的垃圾回收线程数量是和CPU的核数是一样的,标记转移Eden和Survivor1的对象到Survivor2中去,然后尽快一次性回收掉Eden和Survivor1中的垃圾对象,回复Java工作线程的运行。
在这里插入图片描述

2、老年代垃圾回收器–CMS

一般老年代选择CMS垃圾回收器,采用标记清理算法,先通过追踪GC Roots的方法,如果对象没有对GC Roots引用,则标记为垃圾对象,然后一次性把垃圾对象都回收掉。为了避免“Stop the World”引起的系统卡死,CMS垃圾回收器采取垃圾回收线程和系统工作线程尽量同时执行的模式。

CMS在执行一次垃圾回收一共分为四个阶段:以下面的代码为例
在这里插入图片描述

初始标记
初始标记阶段会进入“Stop the World”状态,标记出所有GC Roots直接引用的对象,方法的局部变量和静态变量是 GC Roots,但类的实例变量不是GC Roots。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值