Firefox、メモリ食い「ダークマター」の正体突き止める
2011/08/09
Firefox web browser - Faster, more secure & customizable |
Firefoxでは長らく種類を特定することができない謎のヒープメモリが存在していた。Nightly版でURL欄に「about:memory」を入力すると、メモリ表示の2行目に「heap-unclassified」という項目が見つかるはずだ。何に使われているのかわからない上に、全体のメモリ利用のうえでかなりの割合を占めている。この用途不明のメモリを突き止め排除すれば、メモリ使用量を大幅に減らすことが可能になるとみられる。
この用途不明メモリの正体のひとつが実はjemallocのメモリアロケート時に発生する未使用領域であることがNicholas Nethercote氏によって報告された。すでに原因も明らかになっており、調査および分析を実施した結果、どの部分を改善すればメモリ使用量を大幅に削減できるかの目処も付いているようだ。Firefox 8やFirefox 9以降のFirefoxは、メモリ使用量が大幅に減る可能性がある。
FirefoxはFirefox 3でメモリアロケータとして新しく「jemalloc」を採用した。jemallocはもともとFreeBSDでマルチコアでスケールするアロケータが必要だとして取り込まれたもので、以後Firefoxのみならずほかのプロジェクトでも活用されている。Firefoxにおけるメモリ使用量の増加や使用量の肥大化は常に指摘され続けている問題点であり、随時改善が実施されている。
jemallocでは確保したメモリを開放するときにフラグメンテーションが発生しにくくなるように、特定のサイズに区切ってメモリの確保を実施している。たとえば1,025バイトのアロケーション要求がきた場合、jemallocは2,048バイトを確保する。1,023バイトは利用されない無駄なメモリ領域となる。Nicholas Nethercote氏はこの領域を「スロップ」と呼んでいる。
スロップを完全に排除するには、jemallocの確保するサイズでメモリ確保要求を出すようにプログラムを書き換えれば良いことになる。基本的には2のべき乗で容量を確保すればいい。既存のコードも2のべき乗でメモリを確保するなど工夫されているものもあるが、ヘッダデータを追加するために2のべき乗のサイズにさらに追加で若干のサイズが加わっているものなどがあり、かなりもったいないスロップが発生している部分があるという。
すでにどの部分でスロップが発生しているのか大枠で特定されており、改善へ向けた取り組みが進められている。スロップの発生を完全に排除するのは難しい面があるが、とくによく使われる部分のメモリ確保の方法を変更することで大きな改善が期待できる。現在すでにメモリ使用量とガベージコレクション実行の面で大きな進歩を見せたFirefoxナイトリーだが、今後さらなるメモリ使用量の削減が期待できそうだ。
関連記事
- 150タブベンチ、FirefoxとOperaは似た性能結果[2011/8/8]
- Firefox新デザイン案公開 - Chromeによく似ている?[2011/8/3]
- Firefox、タブとアドレスバーを1行にまとめる「OneLiner」を試験公開[2011/8/2]
- Firefox、大量タブ使用時のパフォーマンスはChromeを圧倒[2011/8/1]
- Firefox、開発ツールの開発/統合作業を急ぐ[2011/7/25]
- Firefoxマルチプロセス化パッチ、Firefox 8ナイトリーに登場[2011/7/22]
- Firefox、新ビジョン発表 - Mozillaが目指す次世代Firefoxとは[2011/7/22]
- Firefox 6週間リリース対応方法を模索する「企業ワーキンググループ」結成[2011/7/21]
- Firefoxが専用アプリに! Mozilla、Webサイトを"アプリ化"する実験機能提供[2011/7/19]
- Mozilla、Firefox Sync用サーバの実装をPHPからPythonへ移行[2011/7/15]
関連サイト
ヘッドライン
- Red Hat、Java EE6をPaaSで提供開始[10:37 8/12]システム管理
- Firefox 6、TCPコネクション積極的に使い回して通信高速化[10:32 8/12]JavaScript / CSS / HTML
- Chrome開発版、Mac OS X Lionのフルスクリーンに対応[10:25 8/12]JavaScript / CSS / HTML
- 京都大学、チンパンジーも前頭前野が未熟な状態で生まれることを発見[08:00 8/12]サイエンス
- 【コラム】『MSDN』の歩き方 第47回 Visual Studio LightSwitchがデビュー[08:00 8/12]システム管理
- 【レポート】デジタルTVビジネスは半導体ベンダであってもソフトの理解が重要 - Trident[07:00 8/12]エレクトロニクス
- NAIST、たんぱく質を用いて3次元フローティングゲートメモリを実現[06:00 8/12]エレクトロニクス
- 【レポート】IEEEが見る、日本のロボット事情と世界のロボット事情[05:00 8/12]エレクトロニクス
- NS、広帯域無線システムの性能を向上させるDVGA2製品を発表[15:41 8/11]エレクトロニクス
- Adobe AIR 3 βSDK登場[14:46 8/11]プログラミング