From 207ec79d94a5ac11c2972a7def40cffad2e58e6f Mon Sep 17 00:00:00 2001 From: alexChanCN <525249661@qq.com> Date: Fri, 22 Apr 2022 01:52:06 +0800 Subject: [PATCH] Update jvm-interviewanswer.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CMS 初始标记和重新标记 需要Stop The World,不是并发标记 --- jvm/jvm-interviewanswer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jvm/jvm-interviewanswer.md b/jvm/jvm-interviewanswer.md index b257ea9..31d10b9 100644 --- a/jvm/jvm-interviewanswer.md +++ b/jvm/jvm-interviewanswer.md @@ -669,7 +669,7 @@ Parallel Scavenge 的关注点主要在**达到一个可控制的吞吐量上面 * 重新标记(CMS remark) * 并发清除(CMS concurrent sweep) -对于上面这四个步骤,初始标记和并发标记都需要 *Stop The World*,初始标记只是标记一下和 GC Roots 直接关联到的对象,速度较快;并发标记阶段就是从 GC Roots 的直接关联对象开始遍历整个对象图的过程。这个过程时间比较长但是不需要停顿用户线程,也就是说与垃圾收集线程一起并发运行。并发标记的过程中,可能会有错标或者漏标的情况,此时就需要在重新标记一下,最后是并发清除阶段,清理掉标记阶段中判断已经死亡的对象。 +对于上面这四个步骤,初始标记和重新标记都需要 *Stop The World*,初始标记只是标记一下和 GC Roots 直接关联到的对象,速度较快;并发标记阶段就是从 GC Roots 的直接关联对象开始遍历整个对象图的过程。这个过程时间比较长但是不需要停顿用户线程,也就是说与垃圾收集线程一起并发运行。并发标记的过程中,可能会有错标或者漏标的情况,此时就需要在重新标记一下,最后是并发清除阶段,清理掉标记阶段中判断已经死亡的对象。 CMS 的收集过程如下