当前位置: 首页 > 工具软件 > oldcms > 使用案例 >

JVM-CMS概述

轩辕瑞
2023-12-01

1.CMS目的:使用并发(回收同时与应用程序同时运行)的方式来降低STW的时间

2.CMS的使用场景:老年代垃圾回收(还需要配合serialold使用)

3.何时使用serialold:CMS是基于“标记清除”的思想来实现回收,必然存在“标记清除”产生的问题即内存碎片。当老年代分配不下对象时,使用serialold进行串行回收。

4.CMS的痛点:当老年代空间不足,会使用serialold的降级策略,进行串行的垃圾回收

5.如何尽量避免使用“serialold”:降低CMS的发生概率即保证老年代内存充足

6.CMS的运行过程:

  • 初始标记。第一次STW
  • 并发标记。占用80%的GC时间(回收同时与应用程序同时运行)
  • 重新标记。第二次STW,主要解决“漏标问题”(大部分的标记工作已在并发标记阶段完成)
  • 并发清理

7.作者的疑问:cms垃圾回收时使用的“标记策略”是什么:步骤2使用的是三色标记法;步骤3使用的是Incremental Update(本答案为作者猜想)

8.漏标触发条件:(以下2个条件缺一不可)

  • 黑色对象指向了白色对象
  • 灰色对象和白色对象断开即灰色对象不再引用白色对象
 类似资料: