Firefox 15 Beta mit verbesserter Speichernutzung verfügbar
Die Frage nach dem besten Browser erregt regelmäßig die Gemüter. Was Linux angeht, dürfte zwar Firefox den Markt dominieren, Chrome holt aber zusehens auf, während die Fan-Gemeine von Opera schon immer überschaubar war, wobei ich allerdings vermute, das Opera eine recht treue Nutzergemeinde hat. Reqonq/Konqueror ist zwar gut in KDE integriert, das reicht aber nicht für eine mit Firefox vergleichbare Verbreitung. Was mich – und wahrscheinlich auf viele andere Nutzer – an Firefox nervt, ist der extrem hohe Speicherverbrauch, vor allem, wenn Du wie ich regelmäßig 50 Tabs und mehr auf hast. Wenn Du dann noch eine stattliche Anzahl von Erweiterungen nutzt, führt der Speicherhunger von Firefox bisweilen zu bizarren Effekten. Die neue Firefox-Version 15 soll in diesem Punkte spürbare Verbesserungen bringen. Seit vorgestern steht die erste Beta-Version von Firefox 15 zum Ausprobieren zur Verfügung.
Startest Du Deinen Browser nur explizit bei Bedarf und verwendest nur ein oder zwei Fenster, respektive Tabs und eine handvoll Erweiterungen, weißt Du wahrscheinlich gar nicht wovon ich rede, weil Dein Firefox kein auffälliges Verhalten zeigt. Alle anderen werden vermutlich Phänomene kennen, wie eine plötzlich einfrierende oder sich mit der Zeit immer träge anfühlende GUI, d. h. das Tab-Switching wird zäh oder Youtube-Videos werden ruckeliger usw. . Dabei steigt der Speicherverbrauch, wie im Bild zu sehen zusehen an, 500 MBbyte sind schon fast ein Normalzustand. Mit „sich träge anfühlende“ GUI meine ich z.B. Verzögerungen bei Standardoperationen wie Scrollen und beim Wechseln von Tabs. Ferner kann es auch zu ganz extremen Einbrüchen der Arbeitsgeschwindigkeit des Gesamtsystems kommen, bis hin zu Totalabstürzen, wenn Deinem System nämlich der freie Speicher ausgeht. Recht schnell kann das bei ARM-Systemen passieren.
Firefox, Flash und Linux
Um keine Missverständnisse aufkommen zu lassen und damit eine etwaige durch diesen Beitrag ausgelöste Diskussion nicht in eine falsche Richtung läuft: Firefox ist unter Linux mit KDE/Plasma nie ganz unproblematisch gewesen. Dass Firefox bei mir zur Zeit (Ubuntu 12.04) gelegentlich (d. h. Bei Dauereinsatz im Schnitt 1 Tag) abstürtzt, hat andere Ursachen. Bekannt sind generelle Probleme, die durch Adobes Flash-Player verursacht werden, bzw. aus den Wechselwirkungen mit diesem resultieren, vermutlich auch im Zusammenhang mit meinen nativen Nvidia-Treiber und dem Multmonitor-Betrieb. Ein Großteil seltsamer Probleme mit Firefox gehen auch direkt auf das Konto der einen oder anderen Erweiterung. Ferner wird sich ein nackter Firefox mit wenigen Erweiterungen und einer Handvoll Tabs kaum träger oder störanfälliger verhalten, als Chrome oder Opera.
Ärgerlich aber nicht ursächlich
Mir ist auch bewusst, dass viele Aussagen von Benutzern bzgl. der Performance, bzw. der Reaktivität der GUI ohne belastbare Benchmarks wertlos sind und eine “gefühlte“ Verbesserung schön für den Benutzer ist, aber ebenfalls wenig Aussagekraft hat. Aktuelle Hardware vorausgesetzt lassen sich in der Tat auf dem ersten Blick kaum merkliche Unterschiede zu Chrome & Co feststellen, wenn man Mal davon absieht, dass Chrome bei mir auf jeden Fall schneller startet, als Firefox. Ich will hier auch nicht davon reden, dass die Gecko-Engine in den letzten Firefox-Versionen, sagen wir gegenüber einem Firefox 4, soundsoviel mal schneller geworden ist. Das mag vielleicht stimmen, ich bezweifele aber, dass der Effekt (wie gesagt auf aktuellen Rechnern) einen nennenswerten Anteil an der tatsächlichen Reaktivität der GUI hat, ebensowenig wie die Frage, ob oder seit wann Firefox Multithreading-fähig ist. Chrome beispielsweise arbeitet vollständig multithreaded, d. h. jeder Tab läuft als eigenständiger Prozess, wobei das Rendern der Oberfläche getrennt von der HTML-Engine passiert. Bei Firefox war das – abgesehen von den Erweiterungen – lange nicht so, sodass eine stark ausgelastete Gecko-Engine bei älteren Firefox-Versionen theoretisch durchaus einen Einfluss auf die Oberfläche hätte haben können. Da aber beispielsweise auch die letzten Seamonkey-Versionen eine meist deutlich fixere GUI-Reaktion zeigt als Firefox, bei an sich gleicher Gecko-Engine, kommt der Multithreading-Fähigigkeit, sowie der Rendering-Engine in Bezug auf das GUI-Verhalten nur einer untergeordnete Bedeutung zu. Ich möchte außerdem noch einem anderen für die GUI-Trägheit gelegentlich vorgebrachten Argument den Wind aus den Segeln nehmen. Bekanntlich sind Browser wie Opera, Chrome oder der IE nativ in C, bzw. C++ und geschrieben, während Mozilla-Applikationen via XUL (JavaScript) gescripted werden, was im Prinzip einen größeren Overhead nach sich zieht. Ich messe aber auch diesem Effekt – immer unter der Voraussetzung aktueller Hardware mit QuadCore-CPU und reichlich Speicher – im Bezug auf die GUI-Trägheit keine überragende Bedeutung zu. Ganz nebenbei hat die Entwicklung via XUL auch Vorteile, etwa die Plattformunabhängigkeit, sowie die einfache Anpaßbarkeit. Ein eindeutiger und reproduzierbarer Verursacher für das geschilderte Verhalten ist jedoch der eingangs genannte extrem hohe und mit zunehmender Tab-, bzw. Plugin-Anzahl steigende Speicherverbrauch von Firefox. Das Problem ist den Mozilla-Entwicklern seit langem bekannt war und soll mit der Version 15 endgültig behoben werden.
Projekt Memshrink
So hat Mozilla bei der ab sofort verfügbaren Beta-Version von Firefox 15 im Rahmen des Projekts “Memshrink” die Speichernutzung von Erweiterungen deutlich optimiert, was Firefox letztendlich schneller macht. Mozilla arbeitet laut eigener Angabe schon länger im Rahmen von Projekt “Memshrink” an einer Verbesserung der Speichernutzung von Firefox. Kern des Übels sind laut Mozilla Erweiterungen, die “Speicher leaken”. Das bedeutet, bestimmte Erweiterungen belegen im Laufe der Zeit zunehmend mehr Speicher, geben aber beim Entladen ungenutzte Speicherbereiche nicht korrekt wieder frei. Firefox 15 soll jetzt über eine Technologie verfügen, die dieses Verhalten Firefox-seitig abstellt, ohne dass Entwickler Ihre Erweiterungen anpassen müssen. Einen ähnlichen Fehler in Firefox selbst hatte Mozilla bereits vorher beseitigt. Das Problem ist seit langem bekannt und wird übrigens nicht nur von exotische Plugins verursacht, sondern auch von populären Vertretern wie Adblock Plus. In den meisten Fällen sind sogenannte Zombie Compartments für die steigende Speicherauslastung verantwortlich. Zwar haben viele Entwickler Ihre Erweiterungen bereits korrigiert, da das Problem aber sehr verbreitet ist, ebenso wie die Anzahl verfügbarer Plugins, hat Mozilla beschlossen, das Problem Browser-seitig anzugehen. Dass das erst jetzt passiert liegt laut Mozilla unter anderem daran, dass man erst Werkzeuge entwickeln musste, mit deren Hilfe sich die Verursacher der hohen Speicherauslastung bestimmen ließen.
Firefox 15 Beta
Du kannst die Beta-Version von Firefox 15 ab sofort von der Firefox-Beta-Seite für Linux, Windows und Mac OS X herunterladen. Bei mir bringt die Beta nach einem ersten Test eine spürbare Verbesserung in Bezug auf die Speichernutzung, wenngleich ich diese Aussage auf die Schelle nicht mit belastbaren Benchmarks belegen kann. Ein wenig Googeln führt aber zu dem Resultat, dass auch anderer Tester den Fortschritt bestätigen können. Darüber hinaus hat der Mozilla-Entwickler Nicholas Nethercote die Verbesserungen mit „Membench“ gemessen. Laut seinem Benchmark mit dem Plugin „McAfees SiteAdvisor 3.4.1“ belegten Firefox 14 und Firefox 15 bei 150 automatisch geöffneten Tabs mit 1730 MByte und 1793 MByte ähnlich viel Speicher, allerdings sank der Wert nach dem Schließen der 150 Tabs bei Firefox 15 auf 374 MByte, gegenüber 1531 MByte bei Firefox 14.
Sonstige Neuerungen
Die verbesserte Speichernutzung ist aber nicht die einzige Neuerung von Firefox 15. So bietet Firefox 15 als einer der ersten Browser eine native, auf „pdf.js“ basierende PDF-Unterstützung. Pdf.js ist eine Javascript-Bibliothek, die PDF-Dateien via JavaScript umwandelt. Der Browser kann sie so direkt anzeigen. Ferner spielt Firefox 15 mit dem HTML5-Audio-Tags Dateien im Opus-Format ab. Letzteres soll in naher Zukunft von der IETF als Internetstandard verabschiedet werden. Darüber hinaus haben die Firefox-Entwickler die CSS-Eigenschaft „word-break“ implementiert, mit deren Hilfe Du festlegen kannst, ob ein Zeilenumbruch in Texten zugelassen wird.
Neuerungen für Webentwickler
Ein Großteil der in Firefox 15 enthalten Neuerungen betrifft allerdings Webentwickler. So haben die Mozilla-Entwickler etwa den Javascript-JIT-Compiler Jaegermonkey optimiert, was das Ausführen von Javascript beschleunigen soll. Hierzu kann ich im Moment aber keine Aussage machen. Im Zusammenhang mit WebGL unterstützt Firefox 15 darüber hinaus komprimierte Texturen. Außerdem bringt Firefox 15 einen integrierten Javascript-Debugger mit. Der soll laut Mozilla nur minimale Auswirkungen auf die Geschwindigkeit von Javascript-Anwendungen haben und sich auch über ein lokales Netzwerk nutzen lassen, um beispielsweise Apps auf anderen Geräten, z.B. Android-Mobiltelefonen, mit Firefox zu untersuchen. Firefox 15 kennt außerdem jetzt den „Responsive Modus“, den Du über das Webentwickler-Menü aufrufen kannst und der das beliebige Verändern der Größe einer Webseite ermöglicht. Firefox zeigt dabei die Größe in Pixeln an und erlaubt es zudem, dass Du bestimmte Auflösungen gezielt angibst. So kannst Du z.B. einfach testen, wie Deine Webseite mit kleineren Auflösungen ausschaut, weil sich die Darstellung der Webseite dynamisch an die zur Verfügung stehende Fläche anpasst. Im Webentwickler-Menü findest Du auch die neue Layout-Ansicht als Teil des hier ebenfalls beheimateten „Inspectors“. Letzterer ist in der Lage, eine visuelle Darstellung der Größe eines Elements der Webseite zu zeigen. So kannst Du schnell erkennen, wie sich die Gesamtgröße aus Rändern, Abständen und dem eigentlichen Element zusammensetzt.