18.3 並行循環参照カウント法
全体的にこの章は情報が足りず、真面目に議論するに値しないように見える
リサイクラー[Bacon et al., 2001; Bacon and Rajan, 2001](5.5 循環参照カウント法を参照)
試験的削除と部分グラフの追跡を組み合わせて循環ゴミを回収する
https://gyazo.com/9c92698cc4de618e83858000e3d09148
並行GCでリサイクラーを使う際の問題点
リサイクラーが循環ごみを検知している間に部分グラフがミューテータによって変更されるかもしれず、同じグラフを再追跡することが保証できない
ポインタの削除が部分グラフの一部を切り離すかもしれない
参照カウントが古くなり失効するかもしれない
非同期型リサイクラー
2フェーズで動作する
第 1 フェーズ
第5 章で述べた同期型コレクタとほとんど同じである
はcollectWhite(アルゴリズム 5‒5)が発見したオブジェクトの解放を次のフェーズまで延期
第2フェーズ
collectWhiteで発見したオブジェクトが依然ゴミであることを確認する
欠点
循環ごみによっては回収されない可能性がある
試験的削除は元の参照カウントを使うことができず、別の循環参照カウントフィールドをオブジェクトヘッダに追加しなければならない
生きているオブジェクトを間違って回収することがないように、アルゴリズムは第 2 フェーズにおいて循環参照の候補を再度追跡しなければならない