Write Barrier

オブジェクトの更新を検知する仕組み。世代別GCでold領域からyoung領域を指すオブジェクトを探す為などに利用される。

Card Marking

領域をnバイトで区切り(Card)、そのCard内に存在しているオブジェクトに書き込まれたことをビットフラグの配列などに記録しておく。
そのオブジェクトに対するビットフラグの位置は簡単な計算で算出できるため高速(フラグをバイト単位にすれば2命令でいけるらしい)かつCardにビットフラグが存在すれば良いので小メモリで実現することが出来る。欠点としては、Cardを大きく取った時にGCのMarkフェーズで使う際、dirty領域が広くなりすぎコストが増大する点にある。
参照:http://www.cs.ucsb.edu/~urs/oocsb/papers/write-barrier.pdf

Remembered Set

世代別GCなどでヒープを複数領域に区切っている場合に、そこを参照している可能性のあるオブジェクトのSetを各ヒープに(または共通で1つ)持たせる。
Remembered Setに書き込んだかどうかを各オブジェクトにフラグで持たせる。
ヒープごとに持たせるには、ポインタがどの領域を指すかを調べる仕組みが必要である。
変更された全オブジェクトを探索する必要なく、そこを参照している可能性のあるオブジェクトのみを調べればよいのでGC時のコストを下げることが出来る。Card Markingに比べると書き込み時のコストが高い。