Google Chrome Blog - The latest news from the Google Chrome team

Google Chromeが大規模JavaScriptアプリケーションに対してもスケールして動作するという説明が、Chromium BlogにてScaling JavaScript to Large Web Applicationsとして掲載された。Google Chrome特有のマルチプロセスアーキテクチャと、V8 JavaScriptエンジンに実装された世代別ガベージコレクションアルゴリズムがその要になっているようだ。

JavaScriptベースのアプリケーションがより大規模で複雑になれば、オブジェクトヒープで管理すべきオブジェクトの数がそれだけ増えることになる。オブジェクトのメモリ確保と再配置が効率的でなければ、オブジェクトの数が増えるにつれてアプリケーションの動作が遅くなることになる。

Chromeはマルチプロセスアーキテクチャを採用しているため、20タブ未満の状態ではそれぞれのJavaScriptアプリケーションは独立したオブジェクトヒープを持つことになる。しかしそうでないブラウザではブラウザでひとつのJavaScriptオブジェクトヒープを持つことになるため、ひとつのJavaScriptアプリの負荷がそのままほかのJavaScriptアプリに影響を及ぼすことになるという。またV8 JavaScriptエンジンで採用している世代別ガベージコレクションアルゴリズムが効率的にガベージコレクションを実施して効率がいいと説明がある。Scaling JavaScript to Large Web Applicationsにはスケールを示すベンチマーク結果のグラフも掲載されている。