Java 并发标记和扫描算法详细信息

Java 并发标记和扫描算法详细信息,java,garbage-collection,Java,Garbage Collection,我正在努力理解CMS终身收集周期中涉及的步骤,并获取更多细节 初始标记 并发标记 同时预清洗 重新标记 并行扫描 同时复位 这些步骤在很多地方都用很短的篇幅进行了解释。但是,如果我必须用图表和psuedo示例在类中描述它们,我可以从哪里获得这些信息 PS-我在谷歌上搜索了很多,它提供了很多我能理解的文字和行话。但我正在寻找一个更生动的解释,这样我可以教我的观众 这些都是一些很受欢迎的链接,第三个很有希望,但它没有特别解释CMS 亲爱的所有人,谢谢你们的评论和指点我一些资源。我已经尝试创建

我正在努力理解CMS终身收集周期中涉及的步骤,并获取更多细节

  • 初始标记
  • 并发标记
  • 同时预清洗
  • 重新标记
  • 并行扫描
  • 同时复位
  • 这些步骤在很多地方都用很短的篇幅进行了解释。但是,如果我必须用图表和psuedo示例在类中描述它们,我可以从哪里获得这些信息

    PS-我在谷歌上搜索了很多,它提供了很多我能理解的文字和行话。但我正在寻找一个更生动的解释,这样我可以教我的观众

    这些都是一些很受欢迎的链接,第三个很有希望,但它没有特别解释CMS


  • 亲爱的所有人,谢谢你们的评论和指点我一些资源。我已经尝试创建CMS步骤的可视化表示,您能告诉我这是否符合您的理解吗

    而且我似乎错过了压缩步骤,它属于哪一个步骤

    回答:好的,因此压缩不由CMS处理,而是委托给完整GC


    从java 1.5开始,另一个被遗漏的阶段是“并发中止预清理”。它的目的是推迟评论,直到在伊甸园空间达到预期的入住率

    除此之外,你几乎走上了正轨

    我建议你看看这个和这个。它确认了您在图像中输入的步骤

    这很好地概括了事情。

    对我来说

    与前辈


    说得很清楚。我忘了我也读过上面@gap_j提到的链接,这些链接也很好


    您询问了压缩步骤的位置,但CMS没有。这可能会导致其自身的问题,特别是它会增加分配内存的成本(因为JVM必须使用列表来跟踪哪些内存是空闲的,并且不能只从占用空间的末尾分配内存),有时这可能意味着一个碎片堆。

    我怀疑是否有人会回答您,因为这个问题太宽泛了。所有的规格都可以在网上找到,所以你只需要找到它们。你可以找到很多链接,而不是等待其他人为你工作。在这种情况下,我建议你给出一个好的链接来解释算法本身。。你花在写评论上的时间本可以在这里得到很好的利用。你应该给我们一些你发现的链接不够生动的例子。否则,人们可能会给你相同的链接,例如-对我来说很有意义(只要你读了之前的2篇GC博客文章,他写道)嗨,我添加了一种可以访问的链接。。这些链接从整体上深入讨论了GC,但并没有特别深入了解CMS。