GCアルゴリズム詳細解説 - GC/extend/LazySweep

LazySweep

遅延Sweep

アルゴリズム

このアルゴリズムはMark&Sweepを基本に考えられる。
前述しているIncrementalGCのSweep部分のみを考えもらうと分かりやすい。
最初GCではMark処理のみを行い、Sweep処理はObjectをAllocateする際にすこしずつ行う。
そして、すべてSweepし終わったら、また同じように繰り返す。

Mark処理を漸次化する場合、ミュテータの書き換えに対応するため、WriteBarrierなどの対応が必要になる。
が、Sweep処理のみなら漸次的に処理することが可能。(ゴミははっきりと分かるため)

利点

  1. Sweepにかかる停止時間を分散させることができる。
  2. つまり最大停止時間が短くなり、よりリアルタイムに処理ができる。

欠点

  1. スループットが増加する

実コードを見たい場合

 ・Rubyのパッチ作りましたRubyLazySweep for patch