Begrenzung der Verwendung von RAM in Chrome?

22

Wenn Sie mehrere Registerkarten in Google Chrome für Stunden / Tage geöffnet lassen, wird auf einigen Seiten so viel RAM verbraucht, dass das gesamte Betriebssystem (XP) aufgrund von Paging nicht mehr reagiert. Wenn ich Glück habe, kann ich endlich die Liste der geöffneten URLs mit einem Lesezeichen versehen, Chrome schließen und neu starten. Wenn nicht, muss ich einfach Chrome töten und hoffe, dass ich die Liste der offenen URLs wiederherstellen kann.

  • Warum das? Speicherverluste in Plug-Ins?
  • Gibt es eine Möglichkeit, Chrome so zu konfigurieren, dass ein einzelner Tab / eine einzelne Seite nicht mehr als eine festgelegte Menge an RAM benötigt?

Vielen Dank.

OverTheRainbow
quelle
Wie viel RAM hast du?
Baarn
@OverTheRainbow - Warum nicht Page Snooze - chrome.google.com/webstore/detail/…
PeanutsMonkey
Ich habe 4 GB, was ausreicht, außer wenn einige Webseiten 500 MB erreichen. Vielen Dank für die Links auf Page Snooze und Session Buddy.
OverTheRainbow
Verwandte Themen: Warum benötigen Webseiten so viel RAM?
Galacticninja

Antworten:

-2

Ich denke, Sie sollten sich für den Kauf von so viel RAM entscheiden, wie Ihr Betriebssystem verarbeiten kann. Sie sollten die RAM-Auslastung von Chrome nicht einschränken, da dies nur Ihr Surferlebnis im Web beeinträchtigt. Angenommen, Sie verwenden Ihren Computer die meiste Zeit zum Surfen im Internet, sollten Sie Chrome alle Ressourcen zur Verfügung stellen, die es benötigt, um die gewünschte Leistung zu erzielen, damit Sie die Ausführung dieser Registerkarten gleichzeitig "genießen" können.

Ich glaube nicht, dass es eine Möglichkeit gibt, die RAM-Auslastung jedes einzelnen Tabs zu begrenzen, aber Sie können die Auslastung von Chrome insgesamt begrenzen. Schau hier:

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

Ich würde das lieber nicht tun, wenn ich Sie wäre, wenn ich reibungslos im Internet surfen möchte.

WikiWitz
quelle
16
Das ist nicht wirklich eine Lösung, wenn Sie nicht die Kontrolle über den Inhalt des Computers haben, den Sie verwenden (dh
Arbeitscomputer
In diesem Fall wäre es gut, wenn es eine Möglichkeit gäbe, Prioritäten für ausgewählte Registerkarten festzulegen (so wie die aktive Registerkarte den größten Teil des Speichers beansprucht), da bei begrenztem Arbeitsspeicher und einem Computer, den Sie nicht besitzen, der Benutzer derjenige ist, der dies tut sollte sich anpassen (indem die Anzahl der geöffneten Tabs reduziert wird), was kontraproduktiv ist.
WikiWitz
4
Chrome verbraucht so viel RAM wie möglich. Wenn Sie also mehr RAM hinzufügen, bedeutet dies, dass Sie mehr Holz ins Feuer werfen und mehr brennen.
JDuarteDJ
5
@WikiWitz, Du unterschätzt, wie viel RAM Chrome isst. Ich habe 16 GB physischen RAM und es ist immer noch nicht genug.
Pacerier
2
"Angenommen, Sie surfen die meiste Zeit mit Ihrem Computer im Internet" - das ist eine wichtige Aufgabe. Nicht alles ist ein Chromebook.
Piskvor
12
  1. Ich habe ein Python 2.5-Programm geschrieben, mit dem die Renderer von Chrome gestört werden, wenn sie über eine festgelegte Menge an Speicher verfügen. Ich führe dieses Programm unter watch. (Beachten Sie, dass das psutil- Modul verwendet wird, das nicht in Python enthalten ist.)

    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. Ich verlasse mich auf Session Buddy , um die geöffneten Tabs wiederherzustellen, wenn Chrome sie nicht wiederherstellen kann.

Dan D.
quelle
Wie geht Chrome damit um, dass Renderer getötet werden? Welches Verhalten zeigt die Registerkarte, nachdem der Renderer beendet wurde? Oh, ich habe gerade Ihren Session Buddy-Kommentar gesehen, was bedeutet, dass Chrome sie manchmal nicht wiederherstellt, okay. Kommt das oft vor? Das ist wirklich ordentlich, danke!
Matthew
1
@Human Die Registerkarten, die diesen Renderer-Prozess verwendeten, der beendet wurde, werden zu abgestürzten Registerkarten. Obwohl das obige Skript mit Chrome 12 in späteren Versionen gut funktioniert, werden auch Erweiterungen gelöscht, die im Gegensatz zu Chrome 12 in Renderer-Prozessen und nicht in Erweiterungen ausgeführt werden.
Dan D.
@Human Wenn Sie nicht auf Wiederherstellen klicken , können die letzten Registerkarten verloren gehen . Auch wenn Sie die Last TabsDatei haben, ist es nicht möglich, Registerkarten aus dieser Datei wiederherzustellen. Ich habe vor langer Zeit versucht, das Format zu bestimmen und die URLs daraus zu extrahieren. Es war nicht erfolgreich. Und ich vertraue mehr auf SQLite als auf das Binärformat, mit dem Chrome die Tabs der aktuellen Sitzung speichert, weshalb SB besser ist.
Dan D.
@DanD., Ist dieses Skript sicher? Wird es den gesamten Chrome zum Absturz bringen?
Pacerier
@Pacerier Ja, es sei denn, Chrome befindet sich nach dem Neustart noch in der verzögerten Ladephase für Registerkarten.
Dan D.
4

Das Einzige, was ich bisher gesehen habe, das dies tun kann, ist Chrom in einem Container laufen zu lassen und den RAM des Containers zu begrenzen .

Dies hat jedoch einige wichtige Vorbehalte,

  • Das Ausführen von Chrome wird durch die Docker-Setup- und Startsequenz erschwert

  • Zum einen verwendet Chrome bereits Kernel-Container, um seine Threads zu sandboxen. Sie müssen den Container also mit einer Art Root-Berechtigung ausführen, mit der dies funktioniert. Dies kann umgangen werden, und das verknüpfte Containermodell tut dies. (es macht praktisch alles, was es braucht)

  • Sie werden mit ziemlicher Sicherheit die GPU-Beschleunigung verlieren

  • Audio zum Laufen zu bringen ist kompliziert, wird aber im verknüpften Containermodell behandelt.

  • Was auch immer Sie sonst erwarten, wenn Sie Ihre Garantie ungültig machen, wird Chrome gewaltsam abgelehnt, keinen weiteren RAM zu verwenden, und wird entsprechend reagieren und Wutanfälle auslösen.

Aber es funktioniert letztendlich.

Ich bin mehr daran interessiert, diese RAM-Grenzen auf Electron Shell-Apps anzuwenden, die keine vorgefertigten Docker-Images haben, um sie für Sie zu rangeln.


Off Topic, aber ich möchte feststellen, dass Firefox sich auf begrenzter Hardware sehr gut verhält, aber ich halte das nicht für eine echte Antwort.

ThorSummoner
quelle
Ich sollte diese Antwort aktualisieren, um mehr darüber zu erfahren, wie Container nur eine cgroup-Schnittstelle sind. Sie können cgroups verwenden , um dasselbe zu erreichen
ThorSummoner,
1

Es ist nicht unbedingt ein Plugin. Beachten Sie, dass Webseiten nicht mehr statisch sind. Einige Webseiten haben nur eine nicht unbedeutende Menge an asynchroner Aktivität. Fügen Sie die Aktivität aus den Plug-Ins hinzu und Sie haben einige Unbekannte.

Das beste Mittel, das ich gefunden habe, ist, die Webseite zu töten und neu zu laden. AFAIK, es gibt keine Möglichkeit, die Größe des Arbeitsspeichers einer Webseite zu begrenzen.

surfasb
quelle
1

Verwenden Sie die Erweiterung "TabsOutliner" - Sie können die Registerkarten auf einfache Weise "herunterfahren", ohne sie tatsächlich aus Ihrem Kontext und der aktuellen Sitzungsliste zu entfernen. Sehr hilfreich.

Tabs Outliner Extension

omnray
quelle
0

Beenden Sie den Registerkartenprozess, der die große Menge an Speicher belegt (ich stelle fest, dass bei Flash-Anwendungen in der Regel mehr als 500 MB verwendet werden). Sie können die toten Registerkarten später einfach neu laden, wenn Sie die Arbeit in ihnen fortsetzen möchten.

Bigbio2002
quelle
0

TabMemFree hält inaktive Tabs automatisch an. Sie können festlegen, wie lange es dauern soll, bis inaktive Registerkarten angehalten werden (mindestens 15 Minuten). Sie können es auch anweisen, angeheftete Registerkarten zu ignorieren.

Tab Wrangler ist eine weitere zu berücksichtigende Erweiterung, die inaktive Tabs automatisch ausschaltet, wenn Sie nach etwas mehr Kontrolle suchen. Wie bei TabMemFree können Sie die Zeitspanne bestimmen, nach der ein Tab als inaktiv eingestuft wird, und festlegen, dass angeheftete Tabs ignoriert werden. Sie haben jedoch die Möglichkeit, zusätzliche Tabs zu sperren und Ihre Tab-Einstellungen zwischen verschiedenen Computern zu synchronisieren.

Daniel
quelle