Android Runtime (ART) und Dalvik

Android Runtime (ART) ist die verwaltete Laufzeit, die von Anwendungen und einigen Systemdiensten unter Android verwendet wird. ART und sein Vorgänger Dalvik wurden ursprünglich erstelltspeziell für das Android-Projekt. ART als Laufzeit führt das DalvikExecutable-Format und die Dex-Bytecode-Spezifikation aus.

ART und Dalvik sind kompatible Laufzeiten, auf denen Dex-Bytecode ausgeführt wird. Einige jedoch Techniken, die auf Dalvik funktionieren, funktionieren nicht auf KUNST. Informationen zu den wichtigsten Problemen finden Sie unter Überprüfen des App-Verhaltens in der Android-Laufzeit (ART).

ART-Funktionen

Hier sind einige der wichtigsten Funktionen von ART implementiert.

Ahead-of-Time (AOT) -Kompilierung

ART führt eine Ahead-of-Time (AOT) -Kompilierung ein, die die Appperformance verbessern kann. ART hat auch eine engere Echtzeitüberprüfung als Dalvik.

Zum Zeitpunkt der Installation kompiliert ART Apps mit dem On-devicedex2oat-Tool. Dieses Dienstprogramm akzeptiert DEX-Dateien als Eingabe und generiert eine kompilierte ausführbare App für das Zielgerät. Das Dienstprogramm sollte in der Lage seinkompilieren Sie alle gültigen DEX-Dateien problemlos. Einige Nachbearbeitungstools erzeugen jedoch ungültige Dateien, die von Dalvik toleriert werden können, aber nicht von ART. Weitere Informationen finden Sie unter Probleme beim Sammeln von Müll beheben.

Verbesserte Garbage Collection

Garbage Collection (GC) ist sehr ressourcenintensiv, was die Leistung einer App beeinträchtigen kann, was zu einer abgehackten Anzeige, einer schlechten Reaktionsfähigkeit der Benutzeroberfläche und anderen Problemen führen kann. KUNST verbessert garbagecollection in mehrfacher Hinsicht:

  • Meist gleichzeitiges Design mit einer einzigen GC-Pause
  • Gleichzeitiges Kopieren zur Reduzierung der Hintergrundspeicherauslastung und Fragmentierung
  • Die Länge der GC-Pause ist unabhängig von der Heap-Größe
  • Kollektor mit geringerer Gesamt-GC-Zeit für den Sonderfall der Bereinigung kürzlich zugewiesener, kurzlebiger Objekte
  • Verbesserte Ergonomie der Garbage Collection, wodurch gleichzeitige Garbage Collections zeitnaher werden, was GC_FOR_ALLOC Ereignisse in typischen Anwendungsfällen extrem selten macht

Entwicklungs- und Debugging-Verbesserungen

ART bietet eine Reihe von funktionen zur Verbesserung der App-Entwicklung und des Debuggens.

Unterstützung für Sampling-Profiler

In der Vergangenheit haben Entwickler das Traceviewtool (für die Ausführung von Tracingapplication) als Profiler verwendet. Während Traceview nützliche Informationen liefert, wurden die Ergebnisse für Dalvik durch den Overhead pro Methodenaufruf verzerrt, und die Verwendung des Tools wirkt sich spürbar auf die Laufzeitleistung aus.

ART fügt Unterstützung für einen dedizierten Sampling-Profiler hinzu, der diese Einschränkungen nicht aufweist. Dies gibt eine genauere Ansicht der App-Ausführung ohnerhebliche Verlangsamung. Sampling-Unterstützung wurde Traceview forDalvik in der KitKat-Version hinzugefügt.

Unterstützung für weitere Debugging-Funktionen

ART unterstützt eine Reihe neuer Debugging-Optionen, insbesondere in Bezug auf Monitor- und Müllsammlungsfunktionen. Zum Beispiel können Sie:

  • Sehen Sie, welche Sperren in Stack-Traces gespeichert sind, und springen Sie dann zu dem Thread, der eine Sperre enthält.
  • Fragen Sie, wie viele Live-Instanzen einer bestimmten Klasse vorhanden sind, fragen Sie nach den Instanzen und sehen Sie, welche Referenzen ein Objekt am Leben halten.
  • Filterereignisse (wie Haltepunkt) für eine bestimmte Instanz.
  • Siehe den Wert, der von einer Methode zurückgegeben wird, wenn sie beendet wird (mithilfe von „method-exit“ -Ereignissen).
  • Set field watchpoint, um die Ausführung eines Programms auszusetzen, wenn auf ein bestimmtes Feld zugegriffen und/ oder geändert wird.

Verbesserte Diagnosedetails in Ausnahmen und Absturzberichten

ART gibt Ihnen so viel Kontext und Details wie möglich, wenn Laufzeitausnahmen auftreten. ART bietet erweiterte Ausnahmedetails für java.lang.ClassCastException, java.lang.ClassNotFoundExceptionund java.lang.NullPointerException.(Spätere Versionen von Dalvik haben erweiterte Ausnahmedetails für java.lang.ArrayIndexOutOfBoundsException und java.lang.ArrayStoreException bereitgestellt, die jetzt die Größe des Arrays und den Offset außerhalb der Grenzen enthalten.)

Beispielsweise zeigt java.lang.NullPointerExceptionjetzt Informationen darüber an, was die App mit dem Nullzeiger versucht hat, z. B. das Feld, in das die App schreiben wollte, oder die Methode, die sie aufrufen wollte. Hier einige typische Beispiele:

java.lang.NullPointerException: Attempt to write to field 'intandroid.accessibilityservice.AccessibilityServiceInfo.flags' on a null objectreference
java.lang.NullPointerException: Attempt to invoke virtual method'java.lang.String java.lang.Object.toString()' on a null object reference

ART bietet auch verbesserte Kontextinformationen in App-nativen Absturzberichten, indem sowohl Java- als auch native Stack-Informationen einbezogen werden.

Probleme melden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post Teilen Sie den Bonus
Next post Basisband