Mozilla Flux

Mozilla関係の情報に特化したブログです。

バックグラウンドタブの処理

複数のタブが開かれているとき、アクティブでない(=バックグラウンドの)タブではどのような処理が行われているのか。Firebug開発者のJohn J. Barton氏が発した問いにFirefoxの主要開発者の一人Boris Zbarsky氏が答えている

Zbarsky氏によると、バックグラウンドのタブでも、リサイズ・リフロー(resize reflow)以外のあらゆる処理が行われているという。ビデオは再生され(ただし描画はされない)、プラグインも通常どおり動作し、DOMのアップデートも発生している。また、タブ間でCPUの配分をコントロールすることもしていない。

つまり、多くのタブを開けば開くほど、メモリだけでなくCPUパワーも消費するわけだ。その代わり、タブをアクティブにしていなくても従前の処理を継続してくれる。

これを受けて、Barton氏は、むしろバックグラウンドのタブは処理を停止し、そのリソースをアクティブなタブに回すほうがパフォーマンスが向上して良いのではないかと主張する。しかし、Zbarsky氏は反対の立場だ。例えばWebメールの新着通知を行うWebアプリケーションが動作しなくなってしまうと述べる。また、議論に参加した別の人々からも、BGMの再生やフィードの読み取りなどに支障をきたすとの意見が出た。

議論の流れからみて、アクティブなタブにだけリソースを配分する仕組みが将来導入されることはなさそうだ。ただ、マルチプロセス化を実現した後で、バックグラウンドのタブについて処理の優先順位を下げることはあり得る。