CMS中的卡表


what:

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

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

 

why:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM