Tab-Verwerfen in Chrome – Ein Experiment zum Arbeitsspeichersparen

Addy Osmani
Addy Osmani

Die Reduzierung des Arbeitsspeicherbedarfs von Chrome gehört zu den obersten Prioritäten des Teams in diesem Jahr. Dank der Verbesserungen bei der automatischen Speicherbereinigung von V8 konnten wir bereits eine Reduzierung der Arbeitsspeichernutzung in Gmail um bis zu 45% verzeichnen, aber wir stehen erst am Anfang. Eines unserer nächsten Experimente zur Gedächtnisnutzung richtet sich an Es heißt Tab Verwerfen.

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

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

Hintergrund

Der Renderer-Prozess benötigt für jeden geöffneten Tab in der Regel etwa 50 MB pro Tab, obwohl die meisten Nutzer jeweils nur einen Tab verwenden. Wenn Sie 10 Tabs geöffnet haben, werden mindestens 450 MB Arbeitsspeicher ausgegeben, nur um den Status des Tabs im Hintergrund beizubehalten. Dies kann mit der Zeit etwas unübersichtlich werden.

Erforderlicher Arbeitsspeicher pro Tab

Eines unserer Ziele ist es, den Arbeitsspeicher auf Tabs zu reduzieren, die Sie nicht tatsächlich nutzen. Wenn ich mir im Chrome Task-Manager ansehe, welche Tabs meinen Systemspeicher verbrauchen, verwende ich eigentlich nur eine oder zwei der unten aufgeführten Websites, während die anderen Tabs im Hintergrund ungenutzt bleiben.

Task-Manager für Arbeitsspeicherbedarf

Das Verwerfen von Tabs kann dabei helfen, unsere Arbeitsspeichernutzung zu reduzieren.

Nicht verwendete Tabs verwerfen

Durch das Verwerfen von Tabs kann Chrome Tabs, die für Sie nicht von Interesse sind, automatisch verwerfen, wenn festgestellt wird, dass der Systemspeicher nur noch begrenzt verfügbar ist. Was verstehen wir unter Verwerfen? Verworfene Tabs brauchen Sie nirgendwohin. Wir löschen sie, aber sie ist immer noch in der Chrome-Tableiste sichtbar. Wenn Sie zu einem verworfenen Tab zurückkehren, wird dieser beim Anklicken neu geladen. Der Inhalt des Formulars, die Scrollposition usw. werden genauso gespeichert und wiederhergestellt, wie bei der Navigation auf dem Tab vorwärts oder rückwärts.

Außerdem gibt es 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 ist, können Sie die im Cache gespeicherte Version, die zuvor über das Netzwerk geladen wurde, neu laden. Wenn Sie das Neuladen von Seiten aus dem Cache aktivieren möchten, können Sie unter chrome://flags/#show-saved-copy einen weiteren Test durchführen.

Du kannst das Verwerfen von Tabs heute ausprobieren. Aktiviere dazu den Tab über chrome://flags/#enable-tab-discarding und starte Chrome neu. Du kannst auf derselben chrome://flags-Seite von Chrome festlegen, ob sie aktiviert oder deaktiviert sein soll.

Verwerfen von Screenshots für Tabs aktivieren.
Screenshot der Schaltfläche „Neustart“

Auf einer neuen Seite mit dem Namen chrome://discards kannst du eine Liste der aktuell geöffneten Tabs aufrufen. Wir versuchen, dir einen Überblick darüber zu geben, wie interessant sie für dich sind – vom größten bis zum wenigsten.

Screenshot der Seite mit verworfenen Tabs.

Um die Funktion zu testen, können Sie entweder Ihr normales Browserverhalten so lange ausführen, bis sich Ihr System im Modus mit wenig Arbeitsspeicher befindet, oder alternativ einen Tab auslösen, der von about:discards verworfen wird, 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.

Screenshot eines Beispiels für einen verworfenen Tab.

Durch das Verwerfen von Tabs werden Tabs in dieser Reihenfolge verworfen:

  • Interne Seiten wie „Neuer Tab“-Seite oder Lesezeichen
  • Vor langer Zeit ausgewählte Tabs
  • Kürzlich ausgewählte Tabs
  • Apps, die in einem Fenster ausgeführt werden
  • Angepinnte 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.

Angepinnte Tabs werden auch berücksichtigt, wenn geprüft wird, ob ein Tab verworfen wird

Inspiration: Hey, toller Hosenträger

Wenn Ihnen das Verwerfen von Tabs bekannt vorkommt, haben Sie wahrscheinlich nützliche Chrome-Erweiterungen kennengelernt, die Ihnen eine etwas einfachere Version dieser Idee bieten, z. B. The Great Suspender. The Great Suspender hat zum Ziel, den Speicher- und GPU-Aufwand von Chrome zu reduzieren, indem Tabs nach einer benutzerdefinierten Inaktivitätsphase gesperrt werden.

Screenshot des Anhaltens

Ähnlich wie beim Verwerfen von Tabs können auch Tabs wieder aktiviert werden, wenn Sie wieder mit ihnen interagieren müssen. Great Hooker behält den Titel und das Favicon jedes Tabs bei und zeigt gesperrte Tabs abgeblendet an, sodass du jederzeit problemlos zu ihnen zurückkehren kannst.

Screenshot eines Favicon für gesperrte Tabs

Tabs im Hintergrund, die ich nicht aktiv verwende, wurden gesperrt, um Arbeitsspeicher zu sparen. Tabs, die ich noch aktiv verwende (GitHub und YouTube), laufen aber weiterhin wie gewohnt.

Wir hatten während der Entwicklung des Verwerfens von Tabs ein nettes Gespräch mit dem Autor der Erweiterung „Great Suspender“. Wir freuen uns, dass wir dieses Problem nativ auf eine Weise angehen, die effizienter sind, als dies mit einer Erweiterung möglich wäre, z. B. durch den Verlust des Nutzerstatus.

Zukünftige Verbesserungen: Tab-Serializer

Der Tab-Serializer ist eine zukünftige Arbeit, die unserer Meinung nach zu erheblichen Verbesserungen bei unserem aktuellen Ansatz zum Verwerfen von Tabs führen könnte. Dabei wird aus dem Inhalt eines Chrome-Tabs der *aktuelle* Status in ein binäres Blob serialisiert. 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 (etwas, das mit Chrome-Erweiterungen bislang nicht ohne Weiteres möglich ist). Die Serialisierung würde die üblichen Verdächtigen umfassen: das DOM (mit vielen WebGL und Canvas), CSS und den Status der V8 JavaScript-VM.

Screenshot des Serializer-Konzepts

Wenn Sie Android oder ChromeOS verwenden, wissen Sie vielleicht, dass wir, ähnlich wie bei dem in diesem Beitrag beschriebenen Test zum Verwerfen von Tabs, Tabs im Hintergrund offensiv schließen, um die Arbeitsspeichernutzung gering zu halten. Das Problem war, dass der Tab *alle* seinen Status verlieren würde.

Wenn du wieder Interesse an dem Tab gezeigt hast, müssten wir ihn neu laden und deine gesamte Interaktion damit geht verloren. Der Tab-Serializer geht dieses Problem einfach so an, dass Sie fast genau zu dem gelangen, was Sie waren, ohne zum Netzwerk zurückkehren zu müssen. Wir freuen uns darauf, zu einem späteren Zeitpunkt weitere Informationen über diese Arbeit zu veröffentlichen.

Teste das Verwerfen von Tabs und sag uns, was du davon hältst

Wir würden gerne erfahren, ob diese Funktion für Sie nützlich ist und wie wir sie verbessern können. Probiert es aus, experimentiert damit (besonders wenn ihr ständig Tabs sammelt!) und teilt uns eure Meinung in den Kommentaren mit. :) Wir würden uns auch freuen, wenn Sie Tickets für Programmfehler auf crbug.com einreichen.