CMS的卡表

what:

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

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

 

why:

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

  

 

posted on 2021-12-15 14:03  MaXianZhe  阅读(507)  评论(0编辑  收藏  举报

导航