Chromium - News and developments from the open source browser project

Google Chromeを常用するようになったユーザはあるポイントに気がついたかもしれない。ChromeはFirefoxなどのブラウザと比べると多くのメモリを消費する。Chromeの特徴であるマルチプロセスアーキテクチャというブラウザとレンダリングエンジンを別のプロセスで動作させるという仕組みが、大量のメモリを消費するという状況を生み出している。

Google Chromeがシングルプロセスのブラウザよりも多くのメモリを消費することはGoogle Chrome Memory Usage - Good and Badにも説明がある。しかし計測方法に注意する必要があるほか、マルチプロセスアーキテクチャならではの利点もあるようだ。たとえばWindows XPのタスクマネージャを使ってChromeが消費しているメモリ量をチェックしたとする。大量のメモリを消費しているようにみえるが、この表示は共有メモリのサイズも含められているため、実際にChromeが使っているメモリ量よりも多いという。説明によればだいたい30%から40%ほど多く計算されていることになるようだ。より正確なメモリ利用情況はabout:memoryで確認できる。

Google Chrome about:memoryでメモリ使用状況をチェック

Chromeが採用したマルチプロセスアーキテクチャはメモリの使用量が増えるという好ましくない特徴を持っている。実装を工夫してメモリ使用量を減らす努力が続けられているようだが、本質的にはシングルプロセスよりも増えてしまう。しかし利点もある。まずメモリ空間がシステムプロセスレベルで分離するためセキュリティ上の脆弱性が発生した場合にほかのブラウジングに影響がでにくい。またレンダリングエンジンプロセスを終了した場合(そのドメイン名のサイトを開いているタブがすべて閉じられた場合)、メモリはOSレベルで開放されることになる。メモリ使用量が増えやすい代わり、使用量を減らすのも確実に実行されるというわけだ。

シングルプロセスアーキテクチャの場合、一度確保したメモリを開放して使用量を減らすのは大変な作業だ。Firefox 3ではFreeBSDで開発されたjemallocを採用することでフラグメンテーションの発生を抑えメモリ使用量を減らす方策をとっているが、プロセスごと終了するGoogle Chromeの方が減りに関しては仕組み上シンプルだ。GoogleではChromeのメモリ使用量が増えやすい点に関しては優れたトレードオフの関係にあると考えているようだ。