ガベージコレクションのアルゴリズムと実装 第4章「コピーGC(Copying GC)」後半

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

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

今日は第4章の後半を読みました。

  • 近似的深さ優先探索
    • コピーGC のオブジェクトを辿る順番を工夫して Cheney のコピーGC幅優先探索の欠点であるキャッシュヒット率の悪さを克服
    • 詳細は複雑なので本書参照。ページ毎に深さ優先探索をしているような感じ
    • デメリットについて特に書かれていないけど、各ページの探索済みポインタが必要なのでマーク時のメモリ使用量が多くなる?
  • 複数空間コピー法
    • ヒープ領域をいくつかの小領域に分けて、各領域毎にコピーGCする。これでGCする時にヒープ全体と同じサイズの領域が必要ではなくなって空間利用効率が改善
    • マークスイープ法とコピーGCを組み合わせたような手法
    • ヒープの分割数によりメリット、デメリットもマークスイープとコピーGCの中間のどちらか寄りになる

あちらを立てればこちらが立たず。GC に万能解はなかなかありませんね。
逆に言えば「スループットは目を瞑るから最大停止時間は極力短く」「とにかく空間利用効率を最良に」と目的がはっきりしているとどの手法が候補に上がるかはわかりやすいと言えましょう。