ChromeでのRAMの使用を制限しますか?


22

Google Chromeで数時間/数日間、いくつかのタブを開いたままにしておくと、ページ全体でOS(XP)が応答しなくなるまで、大量のRAMを使用するページがいくつかあります。運がよければ、開いているURLのリストをようやくブックマークし、Chromeを閉じて、やり直すことができます。そうでない場合は、Chromeを強制終了するだけで、開いているURLのリストを回復できることを願っています。

  • 何故ですか?プラグインのメモリリーク?
  • 単一のタブ/ページが一定量以上のRAMを使用しないようにChromeを設定する方法はありますか?

ありがとうございました。


どれくらいのRAMがありますか?
バールン

@OverTheRainbow - -なぜページスヌーズ考慮していませchrome.google.com/webstore/detail/...
PeanutsMonkey

一部のWebページが500MBを取得する場合を除いて、4GBで十分です。Page SnoozeとSession Buddyのリンクをありがとう。
-OverTheRainbow

回答:


-2

OSが処理できる限りのRAMを購入することを選択すべきだと思います。ChromeのRAM使用量を制限しないでください。Webでのサーフィン体験が台無しになります。ほとんどの場合、インターネットをサーフィンするためにコンピューターを使用していると仮定すると、これらのタブを同時に「楽しむ」ために必要なパフォーマンスを提供するために、Chromeに必要なすべてのリソースを取得させる必要があります。

個々のタブのRAM使用量をすべて制限する方法はないと思いますが、Chromeの使用量を完全に制限できます。ここを見て:

/programming/192876/set-windows-process-or-user-memory-limit

もし私があなただったら、もし私がスムーズなウェブサーフィンをしたいなら、私はむしろそれをしたくない。


16
それは本当にあなたが使用しているコンピュータのコンテンツを制御することはできません解決策はありません(つまり、仕事用のコンピュータ)
Gnoupi

その場合、選択されたタブに「優先度」を設定する方法があれば良いでしょう(アクティブなタブがメモリのほとんどを取得するように)。 (開いているタブの数を減らすことにより)適応する必要がありますが、これは逆効果です。
WikiWitz

4
ChromeはRAMを使い果たしてしまうので、RAMを追加することは、火の中に木材を入れることと同じであり、より多くを燃やします。
JDuarteDJ

5
@WikiWitz、あなたはChromeが消費するRAMの量を過小評価しています。16 GBの物理RAMを使用していますが、まだ十分ではありません。
Pacerier

2
「ほとんどの時間、インターネットをサーフィンするためにコンピューターを使用していると仮定して」-これは大きなお尻です。すべてがChromebookであるとは限りません。
-Piskvor

12
  1. 一定量のメモリを使用すると、クロムのレンダラーを強制終了するPython 2.5プログラムを作成しました。このプログラムはの下で実行しwatchます。(Pythonに含まれていないpsutilモジュールを使用していることに注意してください。)

    import sys, os, psutil
    
    if len(sys.argv) == 2:
        try:
            limit = int(sys.argv[1])
        except:
            limit = 200 # default 200MB
    else:
        limit = 200
    
    uid = os.getuid()
    for p in psutil.get_process_list():
        try:
            if (p.name == 'chrome' and any('type=renderer' in part for part in p.cmdline)
               and p.uid == uid):
                m = p.get_memory_info()
                #print p.pid,m, m.rss / 1024 / 1024, m.vms / 1024 / 1024
                if (m.rss / 1024 / 1024) > limit: # kill if rss is greater than limit
                    print 'Killed', p.pid
                    p.kill()
        except psutil.error.NoSuchProcess:
            pass
        except psutil.error.AccessDenied:
            pass
    
  2. Chromeがタブの復元に失敗した場合、開いているタブを回復するためにセッションバディに依存しています。


Chromeは、レンダラーが殺されるのをどのように処理しますか?レンダラーが削除された後、タブはどのような動作をしますか?ああ、セッションバディのコメントを見たばかりです。つまり、Chromeが時々それらを復元できないということです。これは頻繁に起こりますか?これは本当にすてきです、ありがとう!
マシュー14

1
@Human強制終了されたレンダラープロセスを使用したタブがクラッシュしたタブになります。ただし、上記のスクリプトは後のバージョンのChrome 12でうまく機能しますが、Chrome 12とは異なり、拡張機能ではなくレンダラープロセスで実行される拡張機能も強制終了します。
ダンD. 14

@Human [ 復元 ]をクリックしないと、最後のタブが失われる可能性があります。また、Last Tabsファイルがある場合でも、そのファイルからタブを復元することはできません。ずっと前にフォーマットを決定し、そこからURLを抽出しようとしました。成功しませんでした。また、Chromeが現在のセッションのタブを保存するために使用するバイナリ形式よりもSQLiteに信頼を寄せているため、SBの方が優れています。
ダンD. 14

@DanD。、このスクリプトは安全ですか?Chrome全体がクラッシュしますか?
Pacerier

@Pacerierはい。ただし、Chromeが再起動後、まだタブの読み込み遅延フェーズにある場合を除き、そうではありません。
ダンD.

4

これを行うことができる唯一のことは、コンテナ内でクロム実行し、コンテナram制限することです。

ただし、これにはいくつかの大きな注意事項があります。

  • Dockerizeのセットアップと起動シーケンスによりChromeの実行は複雑です

  • 1つは、Chromeは既にカーネルコンテナーを使用してスレッドをサンドボックス化しています。そのため、コンテナを動作させるための一種のルート権限でコンテナを実行する必要があります。これは回避でき、リンクされたコンテナモデルは回避します。(実質的に必要なことはすべて行います)

  • あなたはほぼ確実にGPUアクセラレーションを失うでしょう

  • オーディオを機能させることは複雑ですが、リンクされたコンテナモデルで処理されます。

  • 保証を無効にした場合、他に何が間違っていると予想しても、Chromeはこれ以上RAMを使用しないように言われることを激しく嫌い、それに応じて動作します。

しかし、最終的には機能します。

私は、これらのRAMの制限を、事前に構築されたdockerイメージを持たないElectron Shellアプリに適用して、それらを圧縮することにもっと興味があります。


トピックから外れますが、Firefoxは限られたハードウェア上で非常に良好に動作することに注意したいのですが、本当の答えとは考えていません。


私は、あなたが使用できる複数のコンテナがただのcgroupインターフェイスであるかについて伝えるためにこの答えを更新する必要のcgroupに同じ達成するために自分自身を
ThorSummoner

1

必ずしもプラグインではありません。Webページはもはや静的ではないことに注意してください。一部のWebページでは、重要な量の非同期アクティビティが実行されています。プラグインからアクティビティを追加すると、いくつかの未知のものが得られます。

私が見つけた最善の解決策は、Webページを強制終了してから再ロードすることです。私の知る限り、Webページが使用するRAMの量を制限する方法はありません。


1

TabsOutliner拡張機能を使用します。コンテキストと現在のセッションリストからタブを実際に削除せずに、タブを「シャットダウン」する簡単な方法を提供します。非常に便利。

タブアウトライナー拡張


0

大量のメモリを使用しているタブプロセスを強制終了します(Flashを使用しているものはすべて500MB以上を使用する傾向があることに気付きます)。後で動作を再開するときに、デッドタブを後でリロードできます。


0

TabMemFreeは、非アクティブなタブを自動的に一時停止します。非アクティブなタブを一時停止するまでの時間を、最低15分で決定できます。固定されたタブを無視するように指示することもできます。

タブラングラーは、もう少しコントロールを探している場合に、非アクティブなタブを自動的に一時停止することを考慮するもう1つの拡張機能です。TabMemFreeと同様に、タブが非アクティブと見なされるまでの時間を決定し、固定されたタブを無視するように設定できますが、追加のタブをロックし、異なるコンピューター間でタブ設定を同期するオプションが追加されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.