技術的な側面で捉えた場合、Firefox 3でもっとも注目すべきポイントは、メモリの利用方法が変更され従来よりもフラグメンテーションの発生が少なくなり、メモリ使用量が少なくなった点にある。タブを30も40も開き、しかもノートPCの場合であればブラウザを起動したままでレジューム/サスペンドといった使い方をするユーザーも少なくない。ブラウザをずっと起ち上げっぱなしにするのが不思議ではなくなった現在では、このFirefox 3で実現されたメモリ管理の改善は極めて有益なものだ。
そして面白いのは、この要となるメモリアロケーション技術に、FreeBSDで採用された新しいメモリアロケーション実装jemallocが採用された点にある。jemallocはJason Evans氏によって実装されたメモリアロケータ。マルチコア/プロセッサシステムにおいてマルチスレッドアプリケーションを動作させることを前提にして実装されたもので、並列処理におけるスケーラビリティを実現しているという特徴がある。元々のアイディアはP. Larson氏およびM. Krishnan氏によってISSM/1998年に発表された論文"Memory allocation for long-running server applications"がベースになっている。
FreeBSDでは、マルチコア/プロセッサシステムにおけるスケーラビリティの実現といった目的で取り込まれたjemallocだが、結果的にフラグメンテーションの発生が抑制できること、高速に動作することなども確認された。jemallocが有益だったことはFreeBSD 7が劇的にスケーラビリティ性能を向上させたことが1つの証拠といえる (もちろんFreeBSDのスケーラビリティ向上はjemallocだけが理由ではないのだが、有益な一因ではある)。
jemalloc採用によるメモリ利用量の改善 - Stualrt Pavlov氏のブログFirefox 3 Memory Usageより抜粋 |
MozillaがFirefoxの次期メモリアロケータとしてjemallocの採用に至った背景には、メモリアロケーションシステムの分析を行った結果フラグメンテーションが大量に発生していることが分かったことにある。また、Mozillaのソフトウェアエンジニア担当Stualrt Pavlov氏がその解決方法を調査した結果、jemallocが、もっとも長期に渡って動作した場合に発生するフラグメンテーションが少ないと判明したためだとJohn Lilly氏が説明してくれた。
事の顛末とその結果についてはStualrt Pavlov氏のブログ「Firefox 3 Memory Usage」にまとまっている。Jason Evans氏と2カ月にわたるやり取りの結果Firefoxへの移植に成功し、ドラスティックなメモリ利用改善を実現したことがまとめられている。ユーザーサイドからは見えにくい改善点だが、Firefox 3の動作を根底から改善する重要な結果だ。