GC笔记--card-table
card table为分代GC设计。
分代GC的优势之一是可以有minor GC。
minor GC会忽略old(相对) space的引用追溯,如果mark追溯到old space,minor GC即终止这一次追溯。
这时,monior GC将漏mark old ->new 的引用,从而对new space的不该清扫的垃圾清扫掉。
remember set/card table可以解决这个问题。
card table将old space分块,和write-barrier结合使用。
如果有old->new的引用引入,write-barrier即在card table中标记那一块old space为dirty,即下次minor GC需要扫描。
因为有old->new为少数的弱假设,card table 1 bit对应old space 4KB被认为是合理的。