最終更新:
author_nari 2008年11月03日(月) 13:04:37履歴
このアルゴリズムはMark&Sweepを基本に考えられる。
GC開始時にルートから参照できるセルに印をつける。
実はここまではIncrementalGCの主な実装と同じで、
ミュテータのセル操作によるものは一律印付けしてしまう。(上図参照)
想定されるは以下の2ケース
1に関しては新規割り当てのセルの為、枝のセルは存在し得ない。
この単純な操作により、GC開始時にゴミであったセルが削除される。
GCの開始時の写真を撮って、その時のゴミを回収する事から
「スナップショット型」「スナップショット方式」と呼ばれる。
このアルゴリズムはGCのIncrementalGC、PararellGC、ConcurrentGCを行う為のものであり、
現在のGCの並列化、並行化において一番性能のいいアルゴリズムと思われる。
発案者はCommonLisp入門などの著者 湯淺太一教授
GC開始時にルートから参照できるセルに印をつける。
実はここまではIncrementalGCの主な実装と同じで、
ミュテータのセル操作によるものは一律印付けしてしまう。(上図参照)
想定されるは以下の2ケース
- マーク中に新規割り当てされたセル
- マーク中に書き換えられた黒→白のセル
1に関しては新規割り当てのセルの為、枝のセルは存在し得ない。
この単純な操作により、GC開始時にゴミであったセルが削除される。
GCの開始時の写真を撮って、その時のゴミを回収する事から
「スナップショット型」「スナップショット方式」と呼ばれる。
このアルゴリズムはGCのIncrementalGC、PararellGC、ConcurrentGCを行う為のものであり、
現在のGCの並列化、並行化において一番性能のいいアルゴリズムと思われる。
発案者はCommonLisp入門などの著者 湯淺太一教授
- GC開始時のゴミしか回収しない為、ゴミの取りこぼしが多くなり、飢餓状態に陥りやすい。
- ルートマークだけは処理分割(並列化など)できない。
- カテゴリ:
- パソコン
- ガーベッジコレクタ(GC)
コメントをかく