Firefox web browser - Faster, more secure & customizable |
Mozillaブログに掲載された記事「A big step towards generational and compacting GC」がFirefoxの今後の性能に大きく影響を与えるとみられる重要な開発ステップに到達したことを伝えた。ガベージコレクタを世代別ガベージコレクションおよびコンパクションの機能を備えたものへ移項させるために必要になる、もっとも泥臭く全体にわたって書き換えをしなければならない部分の作業が完了したという。これは実質的にFirefoxが世代別GCの実装が可能になったことを意味している。
ガベージコレクションはメモリのサイズが大きくなってきた場合、回収にかかる時間が延びるという問題を抱えている。また、確保と解放を繰り返すことでメモリが分断化してメモリ領域の使用効率が下がることも知られている。世代別ガベージコレクションはガベージコレクションの対象を2つに分けることで特に前者の問題の軽減を図る手法。これを実現するにはC++オブジェクトに直接アクセスするポインタが存在していてはならず、参照先を動的に変更しても問題ないような間接ポインタでアクセスを実現しておく必要がある。間接ポインタはコンパクションの実装においても有益。
FirefoxはガベージコレクタでもGeckoでも直接C++オブジェクトへの参照を持っていたため、世代別ガベージコレクションを実現するにはソースコード全体をチェックし書き換えを実施する必要があった。ブログに掲載された記事はこの作業が完了したことを伝えている。将来のFirefoxの動きはもっとスムーズでメモリを消費しないブラウザになる可能性がでてきた。