ガベージコレクションのアルゴリズムと実装 第5章「マークコンパクトGC(Mark Compact GC)」後半 その2

ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装

今日は第5章 後半、ImmixGC の続きを読みました。

  • ImmixGC
    • ラインをまたがってオブジェクト確保された時のためにラインにはCONSERVATIVE(前のラインからはみだしてるオブジェクトがあるかも)という状態がある
    • コンパクションは hole(free状態のラインの連続した領域)の数に応じで、大きいほうからコンパクションする。どこまで(hole何個のブロックまで)やるかを決めるのにも工夫がある(ここでは省略)
    • マークとコピー(コンパクション)は同時に行なわれる。コピー先がなかったらマークするだけ
    • ブロックのラインの状態のテーブルをみてライン毎にスイープ
    • ブロック、ライン単位で管理しているので空間効率が少し悪い。またコンパクション時に順番が保存されてないのでキャッシュヒット率は悪い
    • しかし様々な目的の工夫が凝らされているので良くも悪くも中庸を行っている気がする。空間的、処理時間的オーバヘッドは大きそう。