zoukankan      html  css  js  c++  java
  • CMS的卡表

    what:

      逻辑上将老年代的内存分成大小一致的卡片(card,一般128个字节),每个用1个标记位来记录,将所有的卡片收集到一起来管理,就构成了表格(mark table)。

      当改写引用,是从老年代到新生代的,那么对应card在table中的标记就变为1,即该卡就是dirty card。该过程可以在witer bariier中操作。

    why:

      CMS在做YGC时,为了标记活的对象,除了需要从GC root查找外,还需要找老年代中引用的新生代对象。在找老年代中引用的新生代对象的过程中,如果老年大很大,就会很耗时。卡表的出现就是为了提高性能,采用空间换时间的方式完成的。架构如下:

      

  • 相关阅读:
    二叉堆(最小堆, 最大堆)介绍与实现
    C++ 用变量定义数组
    C++ 用变量定义数组
    053185
    053184
    053183
    053182
    053181
    053180
    oracle prior
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15692514.html
Copyright © 2011-2022 走看看