Tab-Verwerfen in Chrome – Ein Experiment zum Arbeitsspeichersparen

Osmani
Addy Osmani

Die Reduzierung des Arbeitsspeicherbedarfs von Chrome ist eine der obersten Prioritäten des Teams dieses Jahres. Dank der Verbesserungen der automatischen Speicherbereinigung in V8 konnten wir die Speichernutzung in Gmail bereits um bis zu 45% reduzieren, aber wir stehen erst am Anfang. Eines unserer nächsten Experimente zur Speichernutzung zielt auf Tab-Hoarder (wie mich) ab. Er heißt Tab verwerfen.

Nicht alle geöffneten Tabs werden als Tabs verwendet. Bei wenig Arbeitsspeicher kann Chrome uninteressante Tabs im Hintergrund verwerfen.

Das Verwerfen von Tabs ist in Chrome 46 und höher testweise verfügbar.

Hintergrund

Für jeden geöffneten Tab dauert der Renderer-Prozess in der Regel etwa 50 MB pro Tab, auch wenn die meisten Nutzer jeweils nur einen Tab verwenden. Wenn 10 Tabs geöffnet sind, werden mindestens 450 MB an Arbeitsspeicher ausgegeben, um den Tab-Status im Hintergrund beizubehalten. Das kann mit der Zeit etwas unhandlich werden.

Erforderlicher Arbeitsspeicher pro Tab

Eines unserer Ziele ist es, den Arbeitsspeicher für Tabs zu reduzieren, die Sie nicht tatsächlich verwenden. Wenn ich mir im Task-Manager von Chrome ansehe, welche Tabs meinen Systemspeicher verbrauchen, „nutze“ ein oder zwei der unten aufgeführten Websites, während die anderen Tabs im Hintergrund ungenutzt bleiben.

Task-Manager für erforderlichen Arbeitsspeicher

Hier kann die Arbeitsspeichernutzung durch das Verwerfen von Tabs reduziert werden.

Nicht verwendete Tabs verwerfen

Durch das Verwerfen von Tabs verwirft Chrome automatisch Tabs, die nicht von großem Interesse für Sie sind, wenn der Systemspeicher relativ niedrig ist. Was bedeutet „verwerfen“? Ein verworfener Tab verschwindet nirgendwo. Sie wird beendet, ist aber immer noch auf der Chrome-Tableiste zu sehen. Wenn Sie zu einem verworfenen Tab zurückkehren, wird er neu geladen, wenn Sie darauf klicken. Der Inhalt des Formulars, die Scrollposition und so weiter werden auf die gleiche Weise gespeichert und wiederhergestellt, wie dies bei der vor- und zurückliegenden Tab-Navigation der Fall wäre.

Es gibt auch eine weitere neue Funktion, mit der alle Tabressourcen lokal im Cache gespeichert werden können. Dies funktioniert gut, wenn Sie offline sind und Tabs verwerfen. Wenn der Tab wieder aktiviert wird, haben Sie die Möglichkeit, die im Cache gespeicherte Version, die zuvor über das Netzwerk geladen wurde, neu zu laden. Damit die Seite aus dem Cache neu geladen werden kann, kannst du unter chrome://flags/#show-saved-copy einen weiteren Test durchführen.

Du kannst das Verwerfen von Tabs heute ausprobieren, indem du es über chrome://flags/#enable-tab-discarding aktivierst und Chrome neu startest. Sie können auf derselben chrome://flags-Seite in Chrome festlegen, ob die Funktion aktiviert oder deaktiviert wird.

Verwerfen von Tabs aktivieren
Screenshot der Schaltfläche „Neustart“

Auf der neuen Seite chrome://discards können Sie aufführen, welche Tabs derzeit geöffnet sind. Wir versuchen, Ihnen einen Eindruck davon zu vermitteln, wie interessant sie Ihrer Meinung nach für Sie sind – in absteigender Reihenfolge.

Screenshot der Seite „Verworfene Tabs“

Zum Testen der Funktion können Sie entweder Ihr normales Browserverhalten ausführen, bis sich Ihr System in einem Modus mit wenig Arbeitsspeicher befindet, oder alternativ einen Tab mit „about:discards“ verwerfen, indem Sie auf „Tab jetzt verwerfen“ klicken. Dadurch wird der letzte Tab in der Liste verworfen. Sie können auch einen bestimmten Tab aus der Liste verwerfen, indem Sie auf die entsprechende Schaltfläche „Verwerfen“ klicken. Ein verworfener Tab wird mit dem Präfix [Verworfen] angezeigt.

Beispiel-Screenshot eines verworfenen Tabs.

Beim Verwerfen eines Tabs werden die Tabs in dieser Reihenfolge verworfen:

  • Interne Seiten wie „Neuer Tab“-Seite, Lesezeichen usw.
  • Vor langer Zeit ausgewählte Tabs
  • Kürzlich ausgewählte Tabs
  • In einem Fenster ausgeführte Apps
  • Angeheftete Tabs
  • Ausgewählter Tab

Wir haben den Test zum Verwerfen von Tabs in Chrome Canary für Windows und Mac OS aktiviert. Eine Linux-Implementierung ist demnächst verfügbar.

Angeheftete Tabs werden auch berücksichtigt, wenn ein Tab verworfen werden soll.

Inspiration: Hallo, toller Hosenträger

Wenn Ihnen das Verwerfen von Tabs bekannt vorkommt, liegt das daran, dass Sie wahrscheinlich auf nützliche Chrome-Erweiterungen gestoßen sind, die eine etwas einfachere Version dieser Idee ermöglichen, z. B. The Great Suspensioner. The Great Suspensioner hat das Ziel, den Arbeitsspeicher- und GPU-Speicherplatz von Chrome zu reduzieren, indem Tabs nach einer bestimmten Zeit der Inaktivität gesperrt werden.

Screenshot: Hosenträger

Ähnlich wie beim Verwerfen von Tabs kann die Sperrung von Tabs aufgehoben werden, wenn Sie sie noch einmal verwenden müssen. Great Suspensioner verwaltet den Titel und das Favicon jedes Tabs und zeigt gesperrte Tabs abgeblendet an, sodass Sie jederzeit problemlos zu diesen Tabs zurückkehren können.

Favicon-Screenshot gesperrter Tabs.

Tabs im Hintergrund, die ich nicht aktiv verwende, wurden ausgesetzt, um Arbeitsspeicher zu sparen. Tabs, die ich noch aktiv nutze (GitHub und YouTube), werden jedoch weiterhin wie gewohnt ausgeführt.

Wir hatten einen tollen Chat mit dem Autor der Erweiterung „Great Suspensioner“, als wir das Verwerfen von Tabs entwickelten. Er freut sich, dass wir dieses Problem auf effizientere Weise angehen als mit einer Erweiterung, wie etwa den Status der Nutzerinteraktionen verloren zu haben.

Zukünftige Verbesserungen: Tab-Serialisierer

Die Tab-Serialisierung ist eine zukünftige Arbeit, die unserer Meinung nach zu erheblichen Verbesserungen unseres aktuellen Ansatzes zum Verwerfen von Tabs führen kann. Er nimmt den Inhalt eines Chrome-Tabs und serialisiert seinen *aktuellen* Status in einem binären Blob. Dieses binäre Blob kann später in einen Tab deserialisiert werden.

Der Serialisierer würde fast alles serialisieren, was Chrome, Blink und V8 benötigen, um einen Tab ordnungsgemäß beizubehalten. Chrome-Erweiterungen, die dieses Problem angehen, konnten in der Vergangenheit nicht ohne Weiteres bewältigt werden. Die Serialisierung umfasst die üblichen Fehler: das DOM (mit vielen WebGL und Canvas), CSS und den Status der V8 JavaScript-VM.

Screenshot des Konzepts des Serializers

Wenn Sie Android oder ChromeOS verwenden, wissen Sie vielleicht, dass Tabs im Hintergrund offensiv gelöscht werden (ähnlich wie beim Verwerfen von Tabs in diesem Beitrag), um sicherzustellen, dass nur wenig Arbeitsspeicher genutzt wird. Das Problem dabei war, dass der Tab *den gesamten* Zustand verloren hat.

Wenn Sie sich wieder für den Tab interessieren, müssten wir ihn neu laden und alle Interaktionen darauf gehen verloren. Der Tab Serializer nähert sich diesem Problem nur so an, dass Sie fast genau wieder wie gewohnt funktionieren, ohne dass Sie zum Netzwerk zurückkehren müssen. Wir freuen uns darauf, zu einem späteren Zeitpunkt mehr Informationen zu dieser Arbeit zu geben.

Probieren Sie das Verwerfen von Tabs aus und teilen Sie uns Ihre Meinung mit.

Wir würden gerne wissen, ob diese Funktion für dich nützlich ist und wie wir sie verbessern können. Probiere es aus, probier es aus (vor allem, wenn du Tab-Sammler bist!) und teile uns in den Kommentaren mit, was du davon hältst. Wir würden uns auch freuen, wenn Sie auf crbug.com Tickets für Programmfehler einreichen.