Ruby における Mostly-Copying GC の実装
スポンサーリンク
概要
- 論文の詳細を見る
本研究では Ruby VM にコピー GC を実装した.従来の Ruby VM は,メモリ管理に保守的マークスイープ GC を用いていた.その理由は,Ruby には多くの C 言語で記述された拡張モジュールがあり,これらの関数が扱う領域のどこに Ruby オブジェクトへのポインタがあるかが精確には分からないためである.我々は,Bartlett のmostly-copying GC を応用しコピー GC を実現した.基本的なアイデアは,ポインタかどうか分からない値の含まれる 「あいまいなルート」 から指されるオブジェクトは移動させず,それ以外のオブジェクトのみを移動させるというものである.しかし Bartlett のアルゴリズムは,あいまいなルートが多くのポインタを含む場合に回収できないごみが多くなる.そのため改善したアルゴリズムを提案する.提案アルゴリズムでは,マークスイープ GC を組み合わせることにより,このような場合もごみを回収できるようにした.これによりヒープのコンパクションが可能になり,生きているオブジェクトの減少に合わせて広がったヒープを縮小できるようになった.本論文では,そのアルゴリズムの詳細を述べ,それを実装した VM の性能評価を行う.
- 2009-03-23
著者
関連論文
- 世代別Mostly-Copying GCのRuby VMへの実装と評価
- 世代別Mostly-Copying GCのRuby VMへの実装に向けて
- Ruby における Mostly-Copying GC の実装
- プログラムの更新を可能とするCheckpoint/Restart機構
- メソッド実行委託を用いたRubyプロセスの負荷分散ライブラリ
- プログラムの更新を可能とする Checkpoint/Restart 機構
- Glasgow Haskell Compilerにおける再帰的データ構造のための遅延オブジェクトの再利用 (プログラミング Vol.5 No.2)
- 組込み Java の実時間ごみ集め
- ビットマップマーキングを利用したマークコンパクトごみ集めのJikes RVMへの実装