Android-Laufzeit und Dalvik

Die Android-Laufzeit (ART) ist die verwaltete Laufzeit, die von Apps und einigen Systemen verwendet wird. auf Android-Geräten. ART und ihr Vorgänger Dalvik wurden ursprünglich geschaffen und zwar speziell für das Android-Projekt. ART, während die Laufzeit Dalvik ausführt ausführbares Format (DEX) und DEX-Bytecode-Spezifikation.

ART und Dalvik sind kompatible Laufzeiten mit DEX-Bytecode, sodass Apps die für Dalvik entwickelt wurde, sollte auch bei Ausführung mit ART funktionieren. Einige die an Dalvik funktionieren, nicht auch bei ART. Weitere Informationen zum Informationen zu den wichtigsten Problemen erhalten Sie unter App-Verhalten in der Android-Laufzeit (ART)

ART-Funktionen

Hier sind einige der wichtigsten Funktionen von ART.

Kompilierung im Voraus

ART führt eine Pre-of-Time-Kompilierung (AOT) ein, mit der die App verbessert werden kann. die Leistung. Bei ART ist die Überprüfung bei der Installation kürzer als bei Dalvik.

Zum Zeitpunkt der Installation kompiliert ART Apps mithilfe des Geräts auf dem Gerät. dex2oat-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 sein, alle gültigen DEX-Dateien problemlos zu kompilieren. Einige Nachbearbeitungen erzeugen Tools ungültige Dateien, die von Dalvik zwar toleriert werden, zusammengestellt von ART. Weitere Informationen finden Sie unter Adressierung Probleme mit der automatischen Speicherbereinigung

Verbesserte automatische Speicherbereinigung

Die automatische Speicherbereinigung ist sehr ressourcenintensiv und kann die Leistung einer App beeinträchtigen was zu einer abgehackten Anzeige, einer schlechten Reaktionszeit der Benutzeroberfläche und anderen Problemen führt. ART verbessert den Abfall auf verschiedene Arten:

  • Meistens gleichzeitiges Design mit einer einzigen GC-Pause
  • Gleichzeitiges Kopieren, um Hintergrundarbeitsspeichernutzung und Fragmentierung zu reduzieren
  • Die Länge der GC-Pause ist unabhängig von der Heap-Größe
  • Collector mit geringerer Gesamtzeit für die automatische Speicherbereinigung für den Sonderfall der Bereinigung kürzlich zugewiesene kurzlebige Objekte
  • Verbesserte Ergonomie der automatischen Speicherbereinigung, wodurch gleichzeitige Sammlungen zeitnaher, was dazu führt, dass GC_FOR_ALLOC in typischen Anwendungsfällen extrem selten

Verbesserungen bei Entwicklung und Fehlerbehebung

ART bietet eine Reihe von Funktionen zur Verbesserung der App-Entwicklung und der Fehlerbehebung.

Unterstützung für Sampling-Profiler

In der Vergangenheit haben Entwickler Traceview (entwickelt für die Nachverfolgung, Anwendungsausführung) als Profiler. Traceview liefert nützliche Informationen, Die Ergebnisse in Dalvik wurden durch den Over-the-Methode-Aufruf verzerrt und die Verwendung des Tools die Laufzeitleistung spürbar beeinflusst.

ART unterstützt einen speziellen Sampling-Profiler ohne diese Einschränkungen. So erhalten Sie einen genaueren Überblick über die App-Ausführung, deutliche Verlangsamung. Traceview unterstützt jetzt Stichproben für Dalvik in der KitKat-Veröffentlichung.

Unterstützung weiterer Debugging-Funktionen

ART unterstützt eine Reihe neuer Debugging-Optionen, insbesondere bei auf die automatische Speicherbereinigung bezogene Funktionen. Beispielsweise können Sie Folgendes tun:

  • Sehen Sie sich an, welche Sperren in Stacktraces bestehen, und wechseln Sie dann zum Thread, ein Schloss enthält.
  • Fragen Sie, wie viele Live-Instanzen es in einem bestimmten Kurs gibt, fragen Sie nach der und feststellen, welche Referenzen ein Objekt aktiv halten.
  • Ereignisse (z. B. Haltepunkte) für eine bestimmte Instanz filtern.
  • Sehen Sie sich den Wert an, der von einer Methode zurückgegeben wird, wenn sie beendet wird (mithilfe von „method-exit“). Ereignisse).
  • Feld-Watchpoint festlegen, um die Ausführung eines Programms auszusetzen, wenn ein auf das Feld zugegriffen wird und/oder dass es geändert wird.

Verbesserte Diagnosedetails in Ausnahmen und Absturzberichten

ART liefert bei Ausnahmen der Laufzeit so viel Kontext und Details wie möglich auftreten. ART bietet erweiterte Ausnahmedetails für java.lang.ClassCastException, java.lang.ClassNotFoundException, und java.lang.NullPointerException. (In späteren Versionen von Dalvik wurden erweiterte Ausnahmedetails für java.lang.ArrayIndexOutOfBoundsException bereitgestellt. und java.lang.ArrayStoreException, die jetzt die Größe des Arrays und den Offset außerhalb des Grenzwerts sowie ART enthält. kann dies ebenfalls tun.)

Beispiel: java.lang.NullPointerException zeigt jetzt Informationen dazu an, was die App mit dem Nullzeiger versucht hat, z. B. in das Feld, in das die App schreiben wollte, oder aufrufen. Hier sind einige Beispiele:

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

ART bietet außerdem verbesserte Kontextinformationen in nativen App-Absturzberichten, indem Sie Informationen zu Java und nativen Stacks einbeziehen.

Probleme melden

Wenn Probleme auftreten, die nicht auf JNI-Probleme mit der App zurückzuführen sind, melden Sie über die Open Source von Android Problemverfolgung des Projekts adb bugreport und Link zu die App im Google Play Store aufrufen, sofern verfügbar. Fügen Sie andernfalls, wenn möglich, ein APK, das das Problem reproduziert.