ガベージコレクションのアルゴリズムと実装 第3章「参照カウント(Reference Counting)」中盤

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

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

梅雨は朝の読書会の天敵です。雨の日は通勤時間に読書時間が奪われてしまうので。

今日は第3章の中盤を読みました。参照カウントの章を読み終わることができませんでした。

  • 遅延参照カウント
    • ルートからの参照の変更でカウント増減処理しない
    • そのかわり Zero Count Table というのに入れておく
    • アロケートの時にチャンクがなくなったら Zero Count Table をスキャンして改めてルートからの参照を確認、解放
    • 若干複雑ですねー。それに参照カウントなのにマークスイープみたいになっていてメリットデメリットも中間になってしまいそうです
  • Sticky 参照カウント法
    • 5ビットだけのカウンタで参照数をカウント。オーバフローしたら……
      • 死なないオブジェクトになる
      • マークスイープを併用。ただし普通のマークスイープGCではなくてカウント処理もするので重い

参照カウントひとつ取ってもいろいろな工夫があります。カンストで諦めるとか、潔いですね。