Mozilla Flux

Mozilla関係の情報に特化したブログです。

Webアプリケーション開発に役立つアドオン式メモリプロファイラー

Memory ProfilerはMozilla Labsの実験的なプロジェクトの一つで、Webページのメモリ使用状況を調査するツールを提供するものだ。

長い時間にわたってWebブラウザに常駐させておくタイプのWebアプリケーションが増えつつある昨今、こうしたツールに対する需要も高まっているといえるだろう。だが、Atul Varma氏が『Web Application Memory Profiling, Take Two』で説明しているように、今年7月に公開された最初のプロトタイプには次のような欠点があった。

  1. 動作が遅い
  2. FirefoxのJSヒープ全体を表示していたが、そこにはWeb開発者にとってさほど役に立たないFirefoxの内部オブジェクトがたくさん含まれていた
  3. Firefoxがフリーズし、別のブラウザからローカルのWebサーバーにアクセスすることも含め、セットアップがやや大変だった

ちなみに、Firefoxがフリーズしたのは、同氏の『Fun with SpiderMonkey at Toolness』によると、Firefoxのプロセス内に独立したJavaScriptランタイムを起動させる際、通常使用されているランタイムを止めていたためであるらしい。

最近になって、こうした欠点を克服した新しいプロトタイプが公開された。セットアップの容易なアドオン形式で、ツールメニューの「Memory Profiler」から起動すると、新規タブの形で情報が表示される。ただし、Firefox 3.5.x系列専用となっており、たとえばNamoroka Nightlyに無理やりインストールしても正しく動作しない。

プロファイラーを起動して最初に表示されるのは、各タブのページタイトルだ。一つをクリックすると情報が展開されるが、その際にFirefoxがフリーズすることはない。

メモリの使用状況は主にインスタンス数で表示され、使用バイト数についての情報は出ない。使用バイト数は、about:memory(Bug 515354)というFirefox 3.6以降の標準機能の中で、将来的に表示されるようになるはずだ。また、Varma氏いわく、Webアプリケーションのメモリリークをデバッグするために有用なのは、むしろどのような種類のオブジェクトがページ内にとどまっているかであり、その意味でも使用バイト数を表示させる必要性が乏しかった。

プロファイリング情報には、関数の情報も含まれている。クリックすると、対応するソースコードを表示してくれる仕組みだ。インスタンス数のデータなどと組み合わせれば、コード内の挙動がおかしい部分を特定するときに威力を発揮してくれるだろう。

今後もユーザーの意見を取り入れてツールの改良を続けていくという。既にコメント欄では、サマリーの表示やフィルタリング機能などを要望する声が上がっている。