ガベージコレクションのアルゴリズムと実装 第8章「インクリメンタルGC(Incremental GC)」

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

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

今日は第8章を読みました。

  • 3色マーキング
    • 白(未探索)、グレー(子を探索中)、黒(探索完了)の3色でマークする技法
  • マークスイープの分割
    • ルートスキャン、マーク、スイープのフェーズに分けられる。ルートからのマークは一度に済ませる
    • GC中にアプリケーションコードが動くため、ポインタのつけかえを検出するためにライトバリアが必要
    • アロケーション時にもスイープ予定の領域から確保する時にはマークしないといけない
  • Steele のアルゴリズム
    • ライトバリアの条件が厳しくなってる
  • 湯淺のアルゴリズム
    • スナップショットGCとも。GC開始時点で生きているオブジェクトをGC対象にする。やはりライトバリアのマーク条件が異なっている

ライトバリアというのがこんなふうにバリエーションのあるものだとは知りませんでした。

さて、ついにアルゴリズム編は終わって、明日からは実装編に入っていきます。9章の「PythonGC」はいきなり最長の章なので覚悟して読み進めていきたいと思います。