Warum gruppiert Chrome meine Registerkarten in Prozessen und wie kann ich sie stoppen?

8

Ich habe festgestellt, dass in Chrome zumindest für mich alle Registerkarten in einem Renderer-Prozess zusammengefasst sind. Dies ist ein Problem, da Chrome dadurch sehr langsam von 150 KB RAM zum Durchsuchen ist.
Gibt es eine Möglichkeit, es zu erzwingen, dass jede Registerkarte zu einem separaten Prozess wird?

digitxp
quelle

Antworten:

4

Laut der Chrome-Dokumentation gibt es einen --process-per-tabBefehlszeilenschalter, der genau das tut, was Sie wollen.

Whitequark
quelle
Ich habe das schon einmal versucht, und seltsamerweise haben alle Registerkarten in einen Prozess übergegangen, von früher waren alle in zwei Prozessen. Es ist wahrscheinlich eine Erweiterung, die dazu führt, dass die Registerkarten mit dem Skript verbunden werden.
digitxp
@digitxp: Haben Sie versucht, alle Erweiterungen zu deaktivieren oder Chrome im Inkognito-Modus zu starten, was effektiv dasselbe tut (wenn nicht anders konfiguriert)?
Whitequark
3

Für mich haben sie das Problem noch nicht gelöst.

Hier sind einige Links, die das Problem ausführlicher behandeln:

http://code.google.com/p/chromium/issues/detail?id=81877

http://www.google.com/support/forum/p/Chrome/thread?tid=2c6c5ffd1dcd19c5&hl=de

http://code.google.com/p/chromium/issues/detail?id=36617

Es gibt eine switch-Anweisung, die Sie ausführen können (sollte eine Option in der Systemsteuerung für Nicht-CLI-Benutzer sein), die einen neuen Prozess pro Registerkarte erzwingt. Nach weiterem Lesen und Erkennen werden jedoch keine separaten Prozesse pro Registerkarte erzwungen an sich.

Hier ist ein Link zum Chromdiskussions- und Designdokument, das deren Design und Architektur für den Chrombrowser und alle chrombezogenen Prozessmodelle unterstützt. Ich vermute, dass Android und Chrome OS unter eine ähnliche Designspezifikation fallen.

http://dev.chromium.org/developers/design-documents/process-models

Der Name des Switches ist etwas irreführend, weil er mir "ein Prozess pro Tab" sagt, aber in Wirklichkeit ist es ein Prozess pro Gruppe von Tabs mit ähnlichen Skripten, der ständig verfeinert und zu einem riesigen Leviathan eines Prozesses zusammengeführt wird. Meins steigt auch von 500 auf 800 MB. Fast ein Gig Speicher nur für einen einzigen Prozess. Es verlangsamt meinen Computer zum Stillstand. Mehr noch, wahrscheinlich, weil der gesamte Speicher ausgelagert wird. Wenn jedoch jede Registerkarte ein separater Prozess wäre, würden zumindest die Speicher- und Paging-Vorgänge auf der ganzen Linie unterschiedlich sein und die Last im Wesentlichen sowohl auf die CPU als auch auf den Speicher verteilen ( einschließlich Paging).

Chromium unterstützt auch ein einfacheres Modell, das jeder Gruppe von mit Skripten verbundenen Registerkarten einen Renderer-Prozess zuweist

Die Worte des Open-Source-Projekts "Chrom" zum One-Process-per-Tab-Modell:

"Chromium unterstützt auch ein einfacheres Modell, das jeder Gruppe von mit Skripten verbundenen Registerkarten einen Renderer-Prozess zuweist."

Die Anzahl der von Chromium erstellten Rendererprozesse ist global begrenzt. Dies verhindert, dass der Browser den Computer des Benutzers mit zu vielen Prozessen überfordert. Das Limit beträgt derzeit 20 Renderer-Prozesse auf den meisten Computern und weniger auf Computern mit wenig installiertem Speicher. Infolgedessen kann ein einzelner Rendererprozess mehreren Sites zugeordnet sein. Diese Wiederverwendung erfolgt derzeit nach dem Zufallsprinzip. In zukünftigen Versionen von Chromium werden jedoch wahrscheinlich Heuristiken angewendet, um Websites intelligenter Renderer-Prozessen zuzuweisen.

Jason A. Samfield
quelle