日本語の資料がすくないGCアルゴリズムについて詳細に解説します

LazySweep

遅延Sweep

アルゴリズム

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

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

利点

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

欠点

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

実コードを見たい場合

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

コメントをかく


画像に記載されている文字を下のフォームに入力してください。

「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

×

この広告は60日間更新がないwikiに表示されております。

Wiki内検索

Wiki内検索

フリーエリア

編集にはIDが必要です