BT

Ruby仮想マシン総まとめ:MacRuby 0.8、Rubinius 1.2、MRI 1.8.7と1.9.2のアップデート

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 南 伸二 フォローする 0 人のフォロワー 投稿日 2011年1月4日. 推定読書時間: 3 分 |

原文(投稿日:2010/12/26)へのリンク

Ruby仮想マシンは着実に改善され続けており、ここ数週間でまとまった数の新リリースが行われた。

Rubinius 1.2がリリースされ、メモリ効率とデバッグにおける改善が行われた。Evan Phoenix氏はオブジェクト単位のメモリ利用量などRubinius 1.2で行われた変更の詳細について説明した。

[..]私たちはオブジェクト毎のメモリ利用の改善に焦点をフォーカスしました。とりわけ、オブジェクトがメモリ上にどのようにそのインスタンス変数を保持するかについてです。Rubyはインスタンス変数の宣言を必要としないので、モデルインスタンス変数のもっともシンプルな実装方法はハッシュです。これはまさにRubiniusがかつて行っていたことです。問題はインスタンス変数の数が少ないクラスに対して生じます。このような場合、ハッシュテーブルのサイズはかなりのものになり、1ワード(4バイトまたは8バイト)を保持するためだけに100バイト以上のメモリが必要になるのです![..]

新しいコードはクラスについての容易に観察可能な仮定にもとづいています。それは、クラスはそのインスタンスが生成されるより前にそのメソッドの大多数(普通はすべて)が定義される、ということです。私たちはこのことをうまく利用して、クラスのインスタンスが初めて生成される際にこのクラスのインスタンスが利用可能な全メソッドをチェックするコードを実行するようにしています。全メソッドというのは、そのクラス自体に定義されたもの、そのスーパークラスで定義されたもの、すべてのミックスインモジュールで定義されたものの全体を意味します。チェックした全メソッドから、それらのメソッドが利用するすべてのインスタンス変数のテーブルを構築します。

このことによって、私たちはこのクラスのインスタンスに対してどのようにメモリをレイアウトすべきかについてのよい絵柄を構築することができ、インスタンス変数をハッシュテーブルを必要とせずにメモリ上に保持することが可能になります。通常、メモリ利用量は64bitマシン上で100バイトから8バイトまでになります。

Rubiniusはこれまでも強力なDebugger APIを持っていたが、Rubinius 1.2ではruby-debugサポートを追加した。メモリ利用量やメモリリークをデバッグすることはヒープダンプ機能によってサポートされるものであるが、これをRubinius::VM.dump_heap("/path/to/file")のように利用することができる。ヒープダンプを作成する別の方法はまた別の有用なRubiniusの機能Query Agentを利用する方法である。これはモニタリングツールがRubiniusの情報にアクセスしたり、決まったアクションを起こさせたりすることを可能にする。

MacRuby 0.8も利用可能であり、このバージョンの主目的は安定性と互換性の改善である。現在MacRubyプロジェクトは1.0のリリースにフォーカスしようとしている。

私たちは今後これまでよりずっと頻繁にリリースをするようにするつもりである。そのため、ユーザがMacRubyをこれまでよりずっと頻繁にテストすること、そして、より多くのバグを報告してくれることを望んでいる。
しかし、私たちは重要な機能を導入するためのさらなるリリースを考えてはいない。今は安定性と互換性の課題にフォーカスしているからである。

最後に、新旧2つのMRIのパッチレベルリリースもちょうど行われた。MRI 1.8.7 p3301.9.2リリース以来最初のアップデートとなる1.9.2 p136である。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT