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