Firefox、メモリ食い「ダークマター」の正体突き止める

 

Firefox web browser - Faster, more secure & customizable

Firefoxでは長らく種類を特定することができない謎のヒープメモリが存在していた。Nightly版でURL欄に「about:memory」を入力すると、メモリ表示の2行目に「heap-unclassified」という項目が見つかるはずだ。何に使われているのかわからない上に、全体のメモリ利用のうえでかなりの割合を占めている。この用途不明のメモリを突き止め排除すれば、メモリ使用量を大幅に減らすことが可能になるとみられる。

この用途不明メモリの正体のひとつが実はjemallocのメモリアロケート時に発生する未使用領域であることがNicholas Nethercote氏によって報告された。すでに原因も明らかになっており、調査および分析を実施した結果、どの部分を改善すればメモリ使用量を大幅に削減できるかの目処も付いているようだ。Firefox 8やFirefox 9以降のFirefoxは、メモリ使用量が大幅に減る可能性がある。

分類不能のメモリ - Nicholas Nethercote氏はこのメモリをダークマターと揶揄している。

FirefoxはFirefox 3でメモリアロケータとして新しく「jemalloc」を採用した。jemallocはもともとFreeBSDでマルチコアでスケールするアロケータが必要だとして取り込まれたもので、以後Firefoxのみならずほかのプロジェクトでも活用されている。Firefoxにおけるメモリ使用量の増加や使用量の肥大化は常に指摘され続けている問題点であり、随時改善が実施されている。

jemallocでは確保したメモリを開放するときにフラグメンテーションが発生しにくくなるように、特定のサイズに区切ってメモリの確保を実施している。たとえば1,025バイトのアロケーション要求がきた場合、jemallocは2,048バイトを確保する。1,023バイトは利用されない無駄なメモリ領域となる。Nicholas Nethercote氏はこの領域を「スロップ」と呼んでいる。

スロップを完全に排除するには、jemallocの確保するサイズでメモリ確保要求を出すようにプログラムを書き換えれば良いことになる。基本的には2のべき乗で容量を確保すればいい。既存のコードも2のべき乗でメモリを確保するなど工夫されているものもあるが、ヘッダデータを追加するために2のべき乗のサイズにさらに追加で若干のサイズが加わっているものなどがあり、かなりもったいないスロップが発生している部分があるという。

すでにどの部分でスロップが発生しているのか大枠で特定されており、改善へ向けた取り組みが進められている。スロップの発生を完全に排除するのは難しい面があるが、とくによく使われる部分のメモリ確保の方法を変更することで大きな改善が期待できる。現在すでにメモリ使用量とガベージコレクション実行の面で大きな進歩を見せたFirefoxナイトリーだが、今後さらなるメモリ使用量の削減が期待できそうだ。

関連キーワード


転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

樋口大輔の新連載「ホイッスル!W」開幕!2人の主人公が紡ぐ新たなサッカー伝説
[01:20 9/26] ホビー
「orange」アニメ映画化!高野苺の描き下ろし盛り込み、“物語のその後”描く
[01:00 9/26] ホビー
[orange]劇場版アニメが11月18日に公開 原作者の描き下ろしエピソードも
[01:00 9/26] ホビー
空知英秋「銀魂」テレビアニメ新シリーズの放送が決定
[00:00 9/26] ホビー
[都丸紗也華]モンストCMの美女が大胆ビキニ 「ヤンマガ」グラビアで写真集の秘蔵カット公開
[00:00 9/26] エンタメ

求人情報