ガベージコレクションのアルゴリズムと実装 第2章「マークスイープGC(Mark Sweep GC)」前半

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

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

今日は第1章の最後少し見逃していたところと、第2章「マークスイープGC(Mark Sweep GC)」の前半を読みました。

  • 1.9 評価項目。GCの性能は以下の4つで評価される
  1. スループット。トータルでGCにかかる時間
  2. 最大停止時間。GCでアプリケーションの処理が止められる時間
  3. ヒープ領域の利用効率。要はメモリの空間的効率ですね
  4. 参照局所性。キャッシュに乗りやすい配置になっているかどうかなど
  • マークスイープの概要
  • マークスイープの派生たち
    • 複数フリーリスト。アロケーションを早くするため
    • BiBOP(Big Bag Of Pages) 名前は始めてきいた。Ruby も固定長のスロットを割り当ててるので同じようなものですね
    • ビットマップマーキング。Copy on Write との相性の悪さを解消するためにマーク部分をオブジェクトのヘッダとは別の領域に持つ。またスイープも高速になるというメリットもある。マークビットのクリアが高速にできるため