Android 5.0: Lollipop läuft schneller ohne Dalvik und länger mit Volta

Die größte Änderung in Android 5.0 dürfte der Wechsel von der Dalvik-Engine auf die Android Runtime(öffnet im neuen Fenster) sein – kurz ART. Apps sollen jetzt schneller und vor allem flüssiger laufen, denn in ART wurden zahlreiche Mankos behoben, die in der Dalvik-Engine noch zu Rucklern oder Speicherengpässen führten. Lediglich bei Updates müssen Nutzer jetzt länger warten. Projekt Volta sorgt zusätzlich für längere Akkulaufzeiten.










Nach unserem Test der neuen Funktionen sowie einem Hintergrundartikel zur Verschlüsselung und dem Sicherheitsframe SE Android widmen wir uns in diesem Artikel der neuen Runtime und den Energiesparmaßnahmen, die Lollipop mitbringt.

Viele Anwendungen in Android sind in Java programmiert und werden lediglich als Bytecode ausgeliefert. Damit sie laufen, wird eine entsprechende Runtime-Engine benötigt, die den Javacode kompiliert, wenn die App gestartet wird und gleichzeitig als Schnittstelle zum System dient.
Unruhe durch die Garbage Collection
Diese Runtime-Engine hieß bislang unter Android Dalvik-Engine und übernahm unter anderem die Speicherverwaltung samt der sogenannten Garbage Collection. Bei der Garbage Collection kümmert sich das System darum, dass nicht mehr benötigte Speicherbereiche wieder freigegeben werden. Dadurch unterscheidet sich Java von Programmiersprachen wie C oder C++, in denen der Programmierer seine Anwendungen so programmieren muss, dass sie selbst für eine effiziente Speicherverwaltung sorgen.
Die Garbage Collection unterbricht jedoch regelmäßig laufende Anwendungen. Bisher geschah das in zwei Phasen. Im ersten Durchlauf stoppte die Dalvik-Engine die Ausführung sämtlicher Prozesse, um die Datenverteilung im Hauptspeicher zu analysieren. Für mehrere Millisekunden brachte die Garbage Collection so sämtliche laufenden Applikationen zum Stillstand. In der zweiten Phase wurden wieder alle Prozesse angehalten, während die Garbage Collection den Hauptspeicher aufräumte.
Weniger Garbage Collection in ART
Bei der Dalvik-Engine lagen diese Unterbrechungen noch im zwei-, manchmal sogar im dreistelligen Millisekundenbereich, was zu deutlichen Aussetzern bei rechenintensiven Anwendungen führte, etwa zu ausgelassenen Einzelbildern bei Spielen. Laut Google waren es durchschnittlich 54 Millisekunden pro Aufräumzyklus.
Google hat ART deutlich effizienter gestaltet. Die Garbage Collection springt nicht nur weniger häufig an(öffnet im neuen Fenster) , sondern läuft auch noch schneller durch. Dafür sorgen mehrere Neuerungen in ART. Zum einen wurden einige Funktionen zur Speicherverwaltung in die Applikation selbst ausgelagert. Die Funktion Pre-Cleaning sorgt bereits vorab für eine bessere Verteilung der Daten im Hauptspeicher. Die verbleibenden Pausen, die noch durch ARTs Garbage Collection verursacht werden, hat Google von durchschnittlich 10 auf 3 Millisekunden reduziert. Dabei wird meist nur noch der freigegebene Speicherbereich überprüft.
Just-In-Time-Compiler fällt weg
Außerdem gibt es jetzt einen neuen Speicherbereich, den Large Object Space, in dem Anwendungen Bitmaps ablegen können. Das reduziert die Fragmentierung des Hauptspeichers und verringert so die Notwendigkeit für die Garbage Colletion.
Zusätzlich gibt es noch eine neue Speicherverwaltung, die das alte Malloc ersetzt. Rosalloc(öffnet im neuen Fenster) ist unter anderem für das Multihtreading konzipiert und setzt Dateisperren bei der Speicherzuweisung deutlich feiner ein. Denn statt einen gesamten Speicherbereich zu sperren, wie noch sein Vorgänger, kann Rosalloc einzelne Objekte oder sogar nur Teile davon mit einer Sperre belegen. Einige kleinere Objekte in Threads müssen gar nicht mehr gesperrt werden.
Apps werden vorkompiliert
In der Dalvik-Engine gab es noch den Just-In-Time-Compiler, kurz JIT, der Java-Bytecode zur Laufzeit kompilierte. Das strapazierte ebenfalls die Speicherverwaltung, vor allem bei Geräten mit wenig RAM. Denn eine in Echtzeit kompilierte App muss im Arbeitsspeicher gehalten werden, solange sie läuft. Wird dort der Speicher knapp, wird die App beendet und muss später wieder neu kompiliert werden, wenn sie wieder aufgerufen wird.
Ab Lollipop soll der JIT ganz wegfallen. Stattdessen werden Anwendungen in Java bei der Installation auf den einzelnen Geräten einmalig mit dem Werkzeug Dex2oat kompiliert. Das verzögert zwar die Einrichtung, sorgt aber dafür, dass Anwendungen selbst später weniger Fest- und Arbeitsspeicher beanspruchen. Das gilt vornehmlich für 2D-Anwendungen und vor allem für Anwendungen von Google selbst, etwa die Benachrichtigungs-App oder den Play Store. Laut Google sind fast 85 Prozent aller Apps im Play Store in Java programmiert.
Spiele oder einige Benchmark-Programme hingegen werden in C oder C++ erstellt und bereits in der dafür benötigten NDK(öffnet im neuen Fenster) (Native Development Kit) vorkompiliert. Sie betrifft der Wegfall der JIT ohnehin nicht.
Android 5.0 kann 64 Bit
Mit ART erhalten Apps 64-Bit-Unterstützung(öffnet im neuen Fenster) , sofern das SoC eines Geräts mit den entsprechenden CPU-Kernen ausgestattet ist. Die gute Nachricht für Java-Entwickler: Sie müssen ihren Code nicht umschreiben. ART ermittelt, ob ein System 32 oder 64 Bit unterstützt und kompiliert den Code entsprechend. Das gilt freilich nicht für C- oder C++-Anwendungen, sie müssen angepasst werden.
Mit der 64-Bit-Unterstützung können Anwendungen mehr als 4 GByte Arbeitsspeicher adressieren. Aktuelle Geräte haben meist weniger. Das wird sich in Zukunft aber sicherlich ändern. Es gibt noch weitere Vorteile von 64 Bit. Vor allem können Anwendungen auf die entsprechenden Befehlssatzerweiterungen von Prozessoren zugreifen und so beispielsweise kryptographische Berechnungen beschleunigen. Auch Multimedia-Anwendungen profitieren von 64 Bit.
Das Smartphone läuft länger mit Volta
Unter dem Namen Projekt Volta(öffnet im neuen Fenster) hat Google ein neues API für Android geschaffen, das für eine effizientere Energieverwaltung sorgt. Es trägt den Namen Job Scheduler und soll die Hintergrundarbeiten von Apps konsolidieren. Denn fast alle Apps fragen regelmäßig Daten aus dem Internet ab oder schicken Protokolldateien an ihre Server. Bislang setzen die Entwickler selbst entsprechende Zeitspannen. Kommt beispielsweise keine Internetverbindung zustande, wartet die App einen gewissen Zeitraum ab, um es dann nochmal zu versuchen. Je mehr Apps installiert sind, desto öfter muss das System wieder aus dem Schlafmodus gerissen werden. Laut Google läuft ein Nexus 5 im Flugzeugmodus – also fast ganz ohne Hintergrundaktivitäten – einen Monat lang.










Das Job-Scheduler-API soll künftig dafür sorgen, dass die Hintergrundaktivitäten diverser Apps zusammengefasst werden und erst zu einem bestimmten Zeitpunkt gemeinsam abgearbeitet werden. Dazu wird in der App dann kein Timer mehr gesetzt, sondern nur eine Zeitspanne definiert, in der beispielsweise Abfragen erfolgen müssen. Alternativ kann eine App über das API benachrichtigt werden, wenn bestimmte Voraussetzungen für eine Hintergrundaktivität gegeben sind, etwa wenn eine Internetverbindung besteht oder das Gerät am Netzteil hängt.
Entwickler müssen eingreifen
Hier müssen Entwickler aber selbst eingreifen und das API in ihre Anwendungen integrieren. Außerdem ermuntert Google die Programmierer, die Hintergrundaktivitäten in ihren Anwendungen möglichst zu reduzieren. Die Auswirkungen von Projekt Volta werden also nicht gleich zu spüren sein. Google geht selbst mit gutem Beispiel voran und hat die Play-Store-App so angepasst, dass sie nur bei bestehender Internetverbindung und angeschlossenem Ladekabel nach Updates sucht und herunterlädt.
Neben einer verbesserten Abfrage von Informationen über den Akku haben die Google-Entwickler Android ein Python-Skript namens Battery Historian spendiert(öffnet im neuen Fenster) , das die Leistungsaufnahme visualisiert.
Schließlich hat Google noch einen neuen Energiesparmodus eingebaut. Er kann je nach Voreinstellung automatisch bei 15 oder 5 Prozent verbleibender Akkuleistung oder jederzeit manuell aktiviert werden. Die Benachrichtigungs- und die untere Schaltflächenleiste werden dann orange eingefärbt. Das System deaktiviert dabei die Push-Funktionen vieler Apps. Neue E-Mails werden etwa nur dann abgerufen, wenn die Anwendung geöffnet wird. Außerdem werden die Animationen abgeschaltet und die Prozessorleistung auf ein Minimum gedrosselt.
Generell dürften das neue ART und Project Volta vor allem für eine längere Akkulaufzeit sorgen, da Zugriffe auf den Festspeicher und vor allem CPU-Zyklen deutlich reduziert werden. Noch ist Google aber mit seiner Entwicklung nicht fertig. Der Android-Hersteller arbeitet noch an einer verbesserten Garbage Collection, die den Speicher künftig noch effizienter aufräumen soll.