GC Advent Calendarでは時間的に書けなかった、JHCのGCの解説をまとめる。 JHCのGC概要 JHCには下記3つのGCオプションがある。 GCなし BOEHM GC JGC このうち、上の二つはgc_noneによる実装であり、JGCはgc_jgcによる実装である。 この様な構成になったのは、JGCが後から追加されたためだと思われる。 gc_none の挙動 GCなし アロケーションのために必要となるメモリ空間の確保は基本的にmallocで行われる。 mutatorへの割り当ては jhc_malloc と jhc_malloc_atomicの二種類の関数がある。 Boehm GC BOEHM GCを使用するための実装(初期化等)も一部はここにあるようだ。 gc_jgc の挙動 JHCオブジェクトの基本構造 JHCの世界ではすべての値がポインタを介してアクセスされる。ポインタ