Android Runtime (ART) en Dalvik

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.ClassNotFoundExceptionen java.lang.NullPointerException.(Latere versies van Dalvik verstrekten uitgebreide uitzondering detail voor java.lang.ArrayIndexOutOfBoundsExceptionen java.lang.ArrayStoreException, die nu de grootte van de array en de out-of-bounds offset bevatten,en ARTdoes dit ook.)

bijvoorbeeld, java.lang.NullPointerExceptiontoont 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.

Meldingsproblemen

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Previous post deel de Bonus
Next post basisband