
私は答えを求めてフォーラムを検索しましたが、探していた答えは見つからなかったため[1]、ここにいるより多くの人々の興味を引くかもしれないと考えました。
私は仕事の大部分をブラウザ上で(あるいはブラウザのために)行っています。Chrome を使うことが多いのは、必要な最新機能(主に DevTools の機能ですが、それだけではありません)の多くがネイティブに備わっているからです。ちなみに、私は通常、4GB RAM とデュアル コア CPU を搭載したデスクトップ Vaio で、最新の Chrome バージョン/ビルドを実行しています。ディストリビューションは Ubuntu 12.04、ウィンドウ マネージャーは Gnome です。
そこで、a) Chrome が 4 つのタブのうち 3 つしか開いていないのに、なぜこれほど多くのスレッドを生成するのか、b) Chrome にさらに多くのメモリを割り当てて、パフォーマンスの低下を防ぐ方法はあるのか、という点について疑問に思いました。
前もって感謝します、
ナチョ
PS [1] Chromeがフリーズしたりメモリ不足になったりするスレッドは見つかりましたが、その原因や回避方法についてはわかりませんでした。
PPS もちろん、もっと新しくて性能の良いマシンをいつでも購入することができます。私が評価しようとしているのはまさにそれです。これは時代遅れのハードウェアの問題なのか、それともどの (適度なサイズだが巨大ではない) マシンでも問題は発生し続けるのでしょうか?
答え1
Chrome は、ブラウザの主要部分をそれぞれ個別のプロセスに分離します。たとえば、ブラウザ自体は独自のプロセスであり、各タブは独自のプロセスであり、各拡張機能は独自のプロセスです。また、個別の GPU プロセスも存在する可能性があります (これらの詳細は、about:memory で確認できます)。
ここでの利点の 1 つは、各部分が他の部分に対して持つアクセスが制限されていることです。たとえば、拡張機能またはタブに悪意のあるスクリプトがあった場合、(理想的には) そのスクリプトは自身のプロセスにのみ影響し、ブラウザー全体がダウンすることはありません。何らかの理由でタブがフリーズした場合、そのタブ (およびそのタブから開いたタブ) のみがダウンし、ブラウザー全体がダウンすることはありません。(about:sandbox も参照してください。)
Chrome にメモリを事前に割り当てることはできません。Chrome がより多くのメモリを必要とし、それが利用可能であれば、Chrome はそれを使用します。制限条件は I/O 側にもある可能性があることに注意してください。Chrome は起動時および通常の使用時にプロファイル、設定、および少なくとも履歴の一部を読み取る必要があるためです。Linux および Unix には、ファイルを RAM に保存できる機能があり、これによりアクセスが高速化されます (メモリからの読み取りはハード ドライブからの読み取りよりも高速で、書き込み回数が多い場合の摩耗も軽減されます)。ただし、データが失われる可能性があります (コンピューターの電源が切れたりシャットダウンしたりすると、RAM の内容が失われます)。
というスクリプトがありますプロファイル同期デーモンブラウザプロファイルとキャッシュをRAMに保存し、1時間ごとにプロファイルをハードドライブに同期します。つまり、コンピュータの電源が落ちたり、強制シャットダウンしたりしても、プロファイルと履歴は最大1時間前のものになります。(通常のシャットダウンでは、スクリプトはメモリからハードドライブにコンテンツを同期します。)インストールとこれUbuntu へのインストールページ。
Chrome(ium) はキャッシュをプロファイルとは別に保存し、スクリプトはプロファイルのみを管理します (キャッシュの管理はスクリプトの範囲外です)。キャッシュを現在の場所からプロファイル ディレクトリに移動し、古い場所から新しい場所へのシンボリック リンクを追加することをお勧めします。