最終更新:
author_nari 2008年11月03日(月) 13:05:57履歴
このアルゴリズムはMark&Sweepを基本に考えられる。
前述しているIncrementalGCのSweep部分のみを考えもらうと分かりやすい。
最初GCではMark処理のみを行い、Sweep処理はObjectをAllocateする際にすこしずつ行う。
そして、すべてSweepし終わったら、また同じように繰り返す。
Mark処理を漸次化する場合、ミュテータの書き換えに対応するため、WriteBarrierなどの対応が必要になる。
が、Sweep処理のみなら漸次的に処理することが可能。(ゴミははっきりと分かるため)
前述しているIncrementalGCのSweep部分のみを考えもらうと分かりやすい。
最初GCではMark処理のみを行い、Sweep処理はObjectをAllocateする際にすこしずつ行う。
そして、すべてSweepし終わったら、また同じように繰り返す。
Mark処理を漸次化する場合、ミュテータの書き換えに対応するため、WriteBarrierなどの対応が必要になる。
が、Sweep処理のみなら漸次的に処理することが可能。(ゴミははっきりと分かるため)
・Rubyのパッチ作りましたRubyLazySweep for patch
- カテゴリ:
- パソコン
- ガーベッジコレクタ(GC)
コメントをかく