効率的なビットマップマーキングを用いた Ruby 用ごみ集め実装
スポンサーリンク
概要
- 論文の詳細を見る
Apache HTTP サーバのもとで提供される Web サービスのような,ひんぱんにサブプロセスが生成される環境下では,現在 Ruby が採用しているマークビットをオブジェクトヘッダ内に持つマークスイープ方式のゴミ集め実装は,copy-on-write によるメモリページ共有を疎外し,必要以上にメモリを消費する.本研究では,マークをオブジェクトヘッダ内から独立したビットマップに移すことによるメモリ消費量実行性能の変化を示す.効率的なビットマップマーキングのためにはオブジェクトポインタからビットマップの特定の位置の計算が必要である.一般的にはビットマップ位置をたとえば 1M バイト単位でアラインしておきアドレスをマスクすることでビットマップ位置を求めることが行われている.しかし,Ruby のように種々のプラットフォームで動作する言語処理系では,利用できるメモリ割当て API はmalloc() しかないため,効率良くアラインされたメモリを確保する方法は知られていない.本研究では Ruby のオブジェクト配置方式を利用し,移植性を維持したまま,オブジェクトポインタから定数時間でビットマップ位置を計算する手法を提案する.また,二分検索を用いたビットマップマーキングと比較したマーキング性能の改善も示す.
- 2009-03-23
著者
関連論文
- スクリプト言語Rubyの拡張可能な多言語テキスト処理の実装(プログラミング言語の実装技術)
- Rubyの真実
- Ruby における実用的な多言語処理の実装
- オブジェクト指向スクリプト言語に適したごみ集め手法
- 効率的なビットマップマーキングを用いた Ruby 用ごみ集め実装
- Ruby用仮想マシンYARVにおける並列実行スレッドの実装
- Ruby用仮想マシンYARVの実装と評価
- 実用的なRuby用AOTコンパイラ
- Ruby用マルチ仮想マシンによる並列処理の実現 (プログラミング Vol.5 No.2)