Firefox web browser - Faster, more secure & customizable

Firefoxにおける未使用のメモリ領域、いわゆる「ダークマター」を削減する取り組みが進められている。開発の主軸はFirefox 9ナイトリーに移っており、Firefox 8はすでにオーロラのフェーズに入ったことから、Firefox 8に導入されることになる機能はだいたい絞られたことになる。メモリまわりの改善に取り組んでいるMozillaのNicholas Nethercote氏がFirefox 8に導入されるとみられるメモリ回りの改善をまとめており参考になる。

Firefox 8に取り込まれるとみられるメモリ回りの改善は次のとおり。

  • PLArenaにおけるjemalloc問題の局所改善。WindowsおよびLinux版のFirefoxはメモリ確保の半数ほどにPLArenaを使っている(実際にはnsPresArena経由で確保されている。Mac OS X版はもっと消極的にメモリアロケーションを実施しているため、WindowsやLinuxほどは問題が大きくない)。このPLArenaにはjemallocの適切ではない利用によるメモリの不使用領域があるため、これを修正すれば大きくメモリ利用の改善が進むことになる。ただし、完全な改善にはNSPRへの修正が必要になるなど、まだ時間がかかる。不完全ではあるが局所的に問題を解決するパッチは開発されており、このパッチがFirefox 8に取り込まれるとみられる。局所パッチだがすでに大きな改善が確認されている。
  • 「about:memory」におけるメモリ消費の表示をより詳細にする。Valgrindデバッグ/プロファイルツールとの連携を進めて解析を実施しやすくする。取り組みはまだ始まったばかりだが、この成果がFirefox 8にも取り込まれるとみられる。この取り組みは「ダークマターディテクター」と呼ばれている。
  • JavaScriptガベージコレクタにおける空チャンクの扱いの調整。
  • JavaScript型推論におけるメモリリークの修正。

Firefox 9ナイトリーのabout:memoryはすでにより細かい情報を提供するように変わってきている。

ダークマターと揶揄される未使用領域も確実に減っており、改善が進んでいることがわかる。

JavaScript JITエンジンによってコンパイルされたものの実行されないコードがあることが知られている。これはJavaScriptライブラリなどを使っている場合、そのライブラリの一部の機能のみを使うために、ほかの部分が使われずにもったない状況が発生しているものと考えられている。この部分を改善することでメモリ使用量の削減が期待できるが、これはJavaScriptエンジンに大きな変更が必要になることから、改善には時間がかかるとみられる。

6週間というリリーススケジュールを加味すると、Firefox 7のリリースは9月27日、Firefox 8のリリースは11月8日、Firefox 9のリリースは12月20日ということになる。11月にはFirefoxの消費するメモリは大きく減少をはじめることになる。

なお、リスクを伴うが、現段階でメモリの使用量が減ったFirefoxが必要という場合には、Firefox 9ナイトリーを利用するという方法がある。Firefox 9ナイトリーにはすでに各種改善が取り込まれており、メモリの使用量が大きく減っている。