Android Runtime (ART) is de beheerde runtime die wordt gebruikt door applicaties en sommige systeemdiensten op Android. ART en zijn voorganger Dalvik werden oorspronkelijk speciaal gemaakt voor het Android-project. ART als de runtime voert het dalvikexecutable formaat en Dex bytecode specificatie.
ART en Dalvik zijn compatibele runtimes met Dex bytecode, dus apps die ontwikkeld zijn voor Dalvik zouden moeten werken als ze met ART draaien. Sommige technieken die op Dalvik werken, werken echter niet op kunst. Zie het gedrag van app op de Android runtime (ART) controleren voor meer informatie over de belangrijkste problemen.
art Features
hier zijn enkele van de belangrijkste features geïmplementeerd door ART.
AOT-compilatie
ART introduceert AOT-compilatie (AOT) die de prestaties kan verbeteren. Kunst heeft ook een strakkere installatie-tijd verificatie dan Dalvik.
tijdens de installatie compileert ART apps met behulp van de on-devicedex2oat-tool. Dit hulpprogramma accepteert DEX-bestanden als invoer en generatesa gecompileerde app uitvoerbaar voor het doelapparaat. Het hulpprogramma moet in staat zijn om alle geldige DEX-bestanden zonder moeite te compileren. Echter, sommige post-processingtools produceren ongeldige bestanden die door Dalvik getolereerd kunnen worden, maar niet gecompileerd kunnen worden door ART. Zie adressering van Garbage Collection Issues voor meer informatie.
verbeterde garbage collection
Garbage collection (GC) is zeer resource-intensief, wat de prestaties van een app kan aantasten,wat resulteert in schokkerige weergave, slechte UI-responsiviteit en andere problemen. Kunst verbetert garbagecollectie op verschillende manieren:
- Meestal concurrent design met een enkele GC pauze
- Gelijktijdige kopiëren te verminderen achtergrond gebruik van het geheugen en fragmentatie
- De lengte van de GC pauze is onafhankelijk van de grootte van de geheugenopslagruimte
- Verzamelaar met een lagere totale GC tijd voor het speciale geval van opruimen, dat onlangs is toegewezen, van korte duur objecten
- Verbeterde garbage collection ergonomie, waardoor gelijktijdige garbage collections meer tijdig, dat maakt
GC_FOR_ALLOC
evenementen uiterst zeldzaam in de typische use cases
Ontwikkeling en debugging verbeteringen
ART biedt een aantal functies om app ontwikkeling en debugging te verbeteren.
ondersteuning voor sampling profiler
historisch gezien hebben ontwikkelaars het Traceviewtool (ontworpen voor tracingapplication execution) gebruikt als een profiler. Hoewel Traceview nuttige informatie geeft,zijn de resultaten op Dalvik scheefgetrokken door de overhead per methode en het gebruik van de tool heeft een merkbaar effect op de prestaties in de looptijd.
ART voegt ondersteuning toe voor een speciale sampling profiler die deze beperkingen niet heeft. Dit geeft een nauwkeuriger beeld van app uitvoering zonder significante vertraging. Sampling ondersteuning werd toegevoegd aan Traceview forDalvik in de KitKat release.
ondersteuning voor meer debugfuncties
ART ondersteunt een aantal nieuwe debugopties, met name in monitor – andgarbage collection-gerelateerde functionaliteit. U kunt bijvoorbeeld:
- zie welke sloten worden gehouden in stack sporen, spring dan naar de draad die een slot houdt.
- vraag hoeveel live instanties er zijn van een bepaalde klasse, vraag om de instanties te zien, en zie welke referenties een object levend houden.
- filter gebeurtenissen (zoals breekpunt) voor een specifieke instantie.
- zie de waarde die door een methode wordt geretourneerd wanneer deze wordt afgesloten (met behulp van” method-exit ” – gebeurtenissen).
- stel veldtaakpunt in om de uitvoering van een programma op te schorten wanneer een specifiek veld wordt geopend en/of gewijzigd.
verbeterde diagnostische details in uitzonderingen en crashrapporten
ART geeft u zoveel mogelijk context en details wanneer runtime-uitzonderingen optreden. ART geeft uitgebreide uitzonderingen voor java.lang.ClassCastException
,java.lang.ClassNotFoundException
en java.lang.NullPointerException
.(Latere versies van Dalvik verstrekten uitgebreide uitzondering detail voor java.lang.ArrayIndexOutOfBoundsException
en java.lang.ArrayStoreException
, die nu de grootte van de array en de out-of-bounds offset bevatten,en ARTdoes dit ook.)
bijvoorbeeld, java.lang.NullPointerException
toont nu informatie over wat de app probeerde te doen met de null pointer,zoals het veld waar de app naar probeerde te schrijven, of de methode die het probeerde te bellen. Hier zijn enkele typische voorbeelden:
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 biedt ook verbeterde contextinformatie in app-native crashrapporten, door zowel Java-als native stack-informatie op te nemen.