えむもじらさんで紹介されていた。メモリリークを解析してくれるツールleak-gaugeを使ってみました。
ナイトリービルドやトランクビルドにはメモリー状態を記録してくれる機能があるそうで、当然このツールはリリースビルドでは使用できません。
とりあえず必要なものは、leak-gauge(JavaScriptバージョン)これを適当なフォルダーに保存してください。こちらの使い方をご紹介します。
この他にPerlのバージョンもあるのですが、こちらは使用してません。
VAR=value NSPR_LOG_MODULES=DOMLeak:5,DocumentLeak:5,nsDocShellLeak:5 NSPR_LOG_FILE=nspr.log
とりあえず使用する際(Windowsの場合)
上記のような環境設定を設定しなければなりません。そこで下記のようなバッチファイルを作成しFirefox1.6a2を起動
set VAR=value set NSPR_LOG_MODULES=DOMLeak:5,DocumentLeak:5,nsDocShellLeak:5 set NSPR_LOG_FILE=nspr.log SET MOZ_NO_REMOTE=1 cd "d:\Program Files\Firefox 1.6"(トランクを置いてあるフォルダです。) start /wait firefox.exe -p trunk (トランク用のプロファイルです。)
これでFirefoxを動作させて終了すると、バッチファイルを置いたフォルダーにnspr.logというファイルが作成されます。
そして普通にFirefoxを起動(これはリリースビルドでもかまいません)、先ほど保存したleak-gaugeをファイルから開いてください。
(ブックマークにでも登録しておけば簡単に開くことが出来ます。)
下のほうにリンクenter the filenameがあるのでそこをクリックしさっきのnspr.logを放り込んでください。どこでメモリーリークが起きてるかを知らせてくれます。
といっても原因までは分かりません。原因がどこにあるかは特定の動作をさせて絞り込んでいく必要があるみたいです。
自分が作ってる拡張ぐらいはチェックしとこう・・・。