Firefox web browser - Faster, more secure & customizable |
Firefoxユーザの最大の関心ごとのひとつが、Firefoxの消費するメモリ量の多さにある。メモリの消費という面で言えば、マルチプロセスアーキテクチャを採用しているChromeの方が消費量が多いと言われているが、Chromeではタブがプロセスに対応しているため、タブを閉じる(つまりプロセスを終了する)と、そのタブに関連して確保されていたメモリがちゃんと開放される。このため長時間使い続けても問題視されることが少ない。これに対してFirefoxが消費するメモリ量は使い続けるごとに増え、そしてタブを閉じても減らないことが多い。長時間Firefoxを使い続けると重くなると言われる原因はこれだ。しかし、この状況はFirefox 7から大きく好転することになりそうだ。
どのような改善が実施されたかは「Firefox memory bloat fix」および「Fragmentation」に詳しい。最近取り組まれた改善のひとつは、GC(Garbage Collection)を実行するタイミングを現在使われているトリガーベースのものに加え、時間ベースでも実施するというもの。これまでのFirefoxは新しくオブジェクトを確保するタイミングでGCを実行していた。このトリガーが発生しないとメモリは開放されずに確保され続け、搭載メモリの少ないPCではスワップが始まってシステムが重くなるという状況になる。新しい実装では時間ベースでもGCが実行されるため、これまでのように大量のメモリが確保され続けるという状況には陥らないようになる。
もうひとつの改善はメモリのフラグメンテーションを減少させるというもの。Firefoxは1MB単位でメモリを確保し、その1MBの中に使用中のデータがまったくなくなると、その領域を開放するという処理を実施している。仮に4KBのデータが1MBの確保領域にあったとしても、開放されずにずっと確保され続けることになる。とてももったいない状況だ。最近実施された改善でこうしたフラグメンテーションの発生を抑えるように仕組みが変更された。説明によれば平均でJavaScriptヒープの使用量が30%削減されたほか、すべてのタブを閉じた場合のメモリの開放量が500%増えたことも確認されたという。この2つの改善はすでにFirefox 7ナイトリーとFirefox 6オーロラに取り込まれている。Firefox 6にはすでに別のGCの改善が取り込まれているという説明もある。
Firefox 6のリリースは8月16日が予定されており、以後6週間後のリリーススケジュールから計算すると、9月27日にFirefox 7が登場することになる。