美文网首页
4.垃圾回收器CMS的神话故事

4.垃圾回收器CMS的神话故事

作者: 想做安徒生 | 来源:发表于2018-05-19 19:49 被阅读0次

    CMS收集器(并发)基于“标记-清除”算法实现的。结合参数设置GC后进行碎片整理。
    世界众生由造物主主宰,造物主委派元老维护世界和平,合法生物盘点,不合法
    一切生物都将由造物主进行消灭。每一次生物盘点都将遵循以下六个阶段。

    6个阶段:
    (1)世界静止,造物主授权元老——找出GCRoots,进行标记
    (2)元老们一起顺藤摸瓜抓坏人———顺着root节点进行递归遍历标记
    (3)元老们找出哪些在摸瓜过程中变坏/变好的人-----在并发标记期间,标记从新生代晋升的对象、新分配到老年代的对象以及在并发阶段被修改了的对象。
    (4)世界静止,造物主出手生物界进行重新排查-----重标记(STW) 暂停所有用户线程,重新扫描堆中的对象,进行可达性分析,标记活着的对象。
    (5)造物主枪毙变坏的生物-------并发清理,用户线程被重新激活,同时清理那些无效的对象。
    (6)打扫断头台- ------重置。 CMS清除内部状态,为下次回收做准备。

    问题1:并发清理阶段用户线程还在运行,这段时间就可能产生新的垃圾怎么办?
    新的垃圾在此次GC无法清除,只能等到下次清理。这些垃圾有个专业名词:浮动垃圾。
    问题2:并发清理阶段用户线程还在运行可不可能已经被标记死亡的又活过来?
    并发用户线程操作中会插入写入屏障,利用三色标记法将这部分对象标为灰色。

    相关文章

      网友评论

          本文标题:4.垃圾回收器CMS的神话故事

          本文链接:https://www.haomeiwen.com/subject/ncuadftx.html