保守的GC
Conservative GC
コールスタックに積まれたコールフレームにはポインタや非ポインタが入っているが、GCから見ると単なるビット列にしか見えないので判別できない
不明瞭なルート内の全ての値は潜在的にポインタの可能性がある、という風に見えている
ある程度の精度でポインタを識別する必要がある
ポインタのような非ポインタもポインタとみなす
怪しいものはとりあえずポインタとみなす
保守的
ポインタと非ポインタを正しく識別できるGCは正確なGC ポインタかどうかを識別するために以下をチェックする
1. 正しくアラインメントされた値か?
2. ヒープ内を指しているか?
3. オブジェクトの先頭を指しているか?
メリット
言語処理系がGCに依存しない
デメリット
ポインタと非ポインタを識別するコストがかかる
ポインタのご識別によるヒープの圧迫
使用できるGCアルゴリズムが制限される
オブジェクトの移動はできない
コピーGCとかは無理