9. CMS垃圾清理的过程
CMS整个过程比之前的收集器要复杂 , 整个过程分为4个主要阶段 , 即初始标记阶段、并发标记阶段、重新标记阶段和并发清除阶段 。 (涉及STW的阶段主要是:初始标记 和 重新标记 stop-the-world)
- 初始标记(Initial-Mark)阶段:在这个阶段中 , 程序中所有的工作线程都将会因为“stop-the-world”机制而出现短暂的暂停 , 这个阶段的主要任务仅仅只是标记出 GC Roots 能直接关联到的对象 。 一旦标记完成之后就会恢复之前被暂停的所有应用线程 。 由于直接关联对象比较小 , 所以这里的速度非常快 。
- 并发标记(Concurrent-Mark)阶段:从 Gc Roots 的直接关联对象开始遍历整个对象图的过程 , 这个过程耗时较长但是不需要停顿用户线程 , 可以与垃圾收集线程一起并发运行 。
- 重新标记(Remark)阶段:由于在并发标记阶段中 , 程序的工作线程会和垃圾收集线程同时运行或者交叉运行 , 因此为了修正并发标记期间 , 因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录 , 这个阶段的停顿时间通常会比初始标记阶段稍长一些 , 但也远比并发标记阶段的时间短 。
- 并发清除(Concurrent-Sweep)阶段:此阶段清理删除掉标记阶段判断的已经死亡的对象 , 释放内存空间 。 由于不需要移动存活对象 , 所以这个阶段也是可以与用户线程同时并发的
- 私信回复“666”可获取更多JVM资料及面试题 。
- -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4;
- -XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2;
- –XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器组合;
- -XX:+UseParallelOldGC:指定使用 ParNew + ParNew Old 垃圾回收器组合;
- -XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old 垃圾回收器组合;
- -XX:+PrintGC:开启打印 gc 信息;
- -XX:+PrintGCDetails:打印 gc 详细信息 。
- 华硕|2022上半年轻薄本持续上新,为何我更推荐华硕好屏系列新品?
- 荣耀play|权威认可!这家国产品牌携14个2022 iF设计奖满载而归,实力藏不住
- 华硕灵耀|还没开售就火了!华硕灵耀14 2022有没有实力成为轻薄水桶机?
- 半导体|十维资本姜玮常:聚焦中国新一代科技领袖丨春芽「锌」生演讲实录
- iphone13|都2022年了,现在入手iPhone13会不会太晚
- OPPO Find|2022上半年换新机,有哪些很值得关注的旗舰?这三款不看太吃亏
- 36氪首发|智能服务机器人公司「汉特云」获数千万级Pre-A轮融资,提供室内+室外机器人解决方案
- 本文转自:国际在线2020年开始|2022抖音电商茶行业洞察报告
- 酷睿处理器|轻薄长续航+12代酷睿+2.8K OLED,灵耀14 2022为移动商务而生
- 工业互联网|一图读懂-工业互联网专项工作组2022年工作计划重点解读