Android Runtime (ART) och Dalvik

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.ClassNotFoundExceptionoch 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.NullPointerExceptionnu 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.

Rapportera Problem

Lämna ett svar

Din e-postadress kommer inte publiceras.

Previous post dela bonusen
Next post basband