
Ich habe in den Foren nach einer Antwort gesucht, konnte aber nicht genau die Antwort finden, die ich suchte [1] , deshalb dachte ich, dass es für mehr Leute hier auch von Interesse sein könnte.
Ich erledige einen großen Teil meiner Arbeit im Browser (oder für den Browser, wenn Sie es so ausdrücken möchten). Ich verwende meist Chrome, da es viele der neuesten Funktionen, die ich brauche, von Haus aus hat (hauptsächlich, aber nicht nur, DevTools-Sachen). Übrigens verwende ich normalerweise die letzte verfügbare Chrome-Version/Build auf einem Desktop-Vaio mit 4 GB RAM und Dual-Core-CPU und Ubuntu 12.04 als Distribution und Gnome als Fenstermanager.
Daher war ich neugierig, a) warum Chrome so viele Threads erzeugt, selbst wenn nur drei von vier Tabs geöffnet werden und b) ob es eine Möglichkeit gibt, Chrome mehr Speicher zuzuweisen, um Leistungseinbußen vorzubeugen?
Dank im Voraus,
Nacho
PS [1] Ich habe Threads gefunden, in denen es darum ging, dass Chrome einfriert oder nicht genügend Arbeitsspeicher hat, aber nicht darum, warum das so ist oder wie man es vermeiden kann.
PPS: Natürlich könnte ich mir immer eine neuere und leistungsfähigere Maschine kaufen, und genau das versuche ich herauszufinden: Handelt es sich hier um eine Frage veralteter Hardware oder wird das Problem auf jeder (anständigen, aber nicht überdimensionierten) Maschine immer wieder auftreten?
Antwort1
Chrome trennt die einzelnen Hauptteile des Browsers in separate Prozesse. Beispielsweise ist der Browser selbst ein eigener Prozess, jeder Tab ein eigener Prozess und jede Erweiterung ein eigener Prozess. Wahrscheinlich gibt es auch einen separaten GPU-Prozess. (Sie können diese Details unter about:memory sehen.)
Ein Teil des Vorteils besteht darin, dass jeder Teil nur begrenzten Zugriff auf die anderen Teile hat. Wenn sich beispielsweise ein bösartiges Skript in einer Erweiterung oder einem Tab befindet, kann es (im Idealfall) nur seinen eigenen Prozess beeinträchtigen und nicht den gesamten Browser zum Absturz bringen. Wenn ein Tab aus irgendeinem Grund eingefroren wird, wird nur dieser Tab (und möglicherweise Tabs, die Sie von diesem Tab aus öffnen) heruntergefahren, aber nicht der gesamte Browser. (Siehe auch about:sandbox.)
Sie können Chrome keinen Speicher vorab zuordnen. Wenn Chrome mehr Speicher benötigt und dieser verfügbar ist, wird er verwendet. Beachten Sie, dass die Einschränkung auch auf der E/A-Seite liegen kann, da Chrome beim Start und bei der allgemeinen Verwendung Ihr Profil, Ihre Einstellungen und zumindest einen Teil Ihres Verlaufs lesen muss. Linux und Unix verfügen über eine Funktion, mit der Sie Dateien im RAM speichern können, was zu einem schnelleren Zugriff führt (das Lesen aus dem Speicher ist schneller als das Lesen von der Festplatte und kann auch den Verschleiß bei vielen Schreibvorgängen verringern), jedoch mit einem potenziellen Datenverlust verbunden ist (der Inhalt des RAM geht verloren, wenn Ihr Computer die Stromversorgung verliert oder herunterfährt).
Es gibt ein Skript namensProfil-Sync-DaemonDadurch werden das Browserprofil und der Cache im RAM gespeichert und das Profil stündlich mit der Festplatte synchronisiert. Das bedeutet, dass Ihr Profil und Ihr Verlauf höchstens eine Stunde alt sind, wenn Ihr Computer die Stromversorgung verliert oder einen Hard-Shutdown durchführt. (Beim normalen Herunterfahren synchronisiert das Skript den Inhalt vom Speicher auf die Festplatte.) Weitere Informationen zur Installation undDasSeite zur Installation in Ubuntu.
Beachten Sie, dass Chrome(ium) den Cache getrennt von Ihrem Profil speichert und das Skript sich nur um das Profil kümmert (die Verwaltung des Caches liegt außerhalb des Aufgabenbereichs des Skripts). Möglicherweise möchten Sie den Cache vom aktuellen Speicherort in das Profilverzeichnis verschieben und am alten Speicherort einen symbolischen Link zum neuen Speicherort hinzufügen.