Android runtime (ART) är den hanterade runtime som används av applikationer och vissa systemtjänster på Android. Konst och dess föregångare Dalvik skapades ursprungligenspeciellt för Android-projektet. Konst som runtime kör DalvikExecutable format och Dex bytecode specifikation.
ART och Dalvik är kompatibla drifttider som kör Dex bytecode, så appar som utvecklats för Dalvik bör fungera när de körs med ART. Vissa tekniker som arbetar på Dalvik arbetar dock inte med konst. För information om de viktigaste frågorna, se Verifieringapp beteende på Android runtime (ART).
KONSTFUNKTIONER
här är några av de viktigaste funktionerna som implementerats av ART.
före tid (AOT) sammanställning
ART introducerar före tid (AOT) sammanställning, vilket kan förbättra appperformance. ART har också strängare installationsverifiering än Dalvik.
vid installationstiden kompilerar ART appar med verktyget on-devicedex2oat. Detta verktyg accepterar DEX-filer som indata och generatesa kompilerad app körbar för målenheten. Verktyget ska kunnakompilera alla giltiga dex-filer utan svårighet. Vissa efterbehandlingsverktyg producerar dock ogiltiga filer som kan tolereras av Dalvik men som inte kan kompileras av ART. För mer information, se Adresseringskräpsamlingsproblem.
förbättrad sophämtning
sophämtning (GC) är mycket resurskrävande, vilket kan försämra en app prestanda,vilket resulterar i hackig display, dålig UI lyhördhet, och andra problem. Konst förbättrar skräpsamling på flera sätt:
- mestadels samtidig design med en enda GC-paus
- samtidig kopiering för att minska bakgrundsminneanvändning och fragmentering
- längden på GC-pausen är oberoende av högstorleken
- samlare med lägre total GC-tid för det speciella fallet med att städa upp nyligen tilldelade, kortlivade objekt
- förbättrad ergonomi för sopsamling, vilket gör samtidiga sopsamlingar mer tid, vilket gör
GC_FOR_ALLOC
händelser extremt sällsynta i typiska användningsfall
utveckling och felsökning förbättringar
Art erbjuder ett antal funktioner för att förbättra apputveckling och felsökning.
stöd för sampling profiler
historiskt har utvecklare använt Traceviewtool (designad för tracingapplication execution) som en profiler. Medan Traceview ger användbar information, dess resultat på Dalvik har skev av Per-metod-samtal overhead, och useof verktyget märkbart påverkar körtidsprestanda.
ART lägger till stöd för en dedikerad provtagningsprofil som inte har dessabegränsningar. Detta ger en mer exakt bild av appkörning utanbetydande avmattning. Provtagningsstöd lades till Traceview forDalvik i KitKat-utgåvan.
stöd för fler felsökningsfunktioner
ART stöder ett antal nya felsökningsalternativ, särskilt i monitor – andgarbage collection-relaterad funktionalitet. Till exempel kan du:
- se vilka lås som hålls i stapelspår och hoppa sedan till tråden som håller ett lås.
- fråga hur många levande instanser det finns av en viss klass, be om att se instanserna och se vilka referenser som håller ett objekt live.
- Filtrera händelser (som Brytpunkt) för en specifik instans.
- se värdet som returneras av en metod när den avslutas (med ”metod-avsluta” – händelser).
- Ställ in field watchpoint för att avbryta körningen av ett program när ett specifikt fält öppnas och/eller ändras.
förbättrad diagnostisk detalj i undantag och kraschrapporter
ART ger dig så mycket sammanhang och detaljer som möjligt när runtime exceptionsoccur. ART ger utökad undantagsdetalj för java.lang.ClassCastException
,java.lang.ClassNotFoundException
och java.lang.NullPointerException
.(Senare versioner av Dalvik tillhandahöll utökad undantagsdetalj för java.lang.ArrayIndexOutOfBoundsException
och java.lang.ArrayStoreException
,som nu inkluderar storleken på matrisen och offset-offset, och ARTdoes detta också.)
till exempel visar java.lang.NullPointerException
nu information om vad appen försökte göra med null-pekaren, till exempel fältet som appen försökte skriva till eller metoden den försökte ringa. Här är några typiska exempel:
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 ger också förbättrad kontextinformation i App native crash reports, genom att inkludera både Java och native stack information.