Android runtime (ART) er den administrerte runtime som brukes av applikasjoner og noen systemtjenester På Android. KUNST Og forgjengeren Dalvik ble opprinnelig opprettetspesielt For Android-prosjektet. ART som runtime utfører DalvikExecutable format og Dex bytecode spesifikasjon.
ART og Dalvik er kompatible kjøretider som kjører Dex bytecode, så appsdeveloped For Dalvik skal fungere når du kjører MED ART. Men noen teknikker Som jobber På Dalvik jobber ikke MED KUNST. Hvis du vil ha informasjon om de viktigste problemene, kan Du se Verifyingapp-virkemåten på Android runtime (ART).
ART Features
Her er noen av de viktigste funksjonene implementert AV ART.
aot-kompilering
ART introduserer aot-kompilering, som kan forbedre appperformance. ART har også strammere installasjonstidsbekreftelse enn Dalvik.
VED installering kompilerer ART apper ved hjelp av on-devicedex2oat-verktøyet. Dette verktøyet aksepterer DEX-filer som input og generatesa kompilert app kjørbar for målenheten. Verktøyet skal kunnekompilere alle gyldige dex-filer uten problemer. Men noen post-processingtools produsere ugyldige filer som Kan tolereres Av Dalvik, men kan ikke becompiled AV ART. Hvis du vil Ha mer informasjon, kan Du se Adressering Søppelinnsamlingsproblemer.
Forbedret søppelsamling
Søppelsamling (GC) er svært ressurskrevende,noe som kan svekke en app ytelse, noe som resulterer i hakkete skjerm, dårlig UI respons, og andre problemer. ART forbedrer garbagecollection på flere måter:
- for Det Meste samtidig design med en enkelt gc-pause
- samtidig kopiering for å redusere bruk av bakgrunnsminne og fragmentering
- LENGDEN PÅ gc-pause er uavhengig av heap-størrelsen
- Samler med lavere total gc-tid for det spesielle tilfellet med å rydde opp nylig tildelte, kortvarige objekter
- Forbedret ergonomi for søppelsamling, noe som gjør samtidige søppelsamlinger mer rettidig, noe som gjør
GC_FOR_ALLOC
hendelser ekstremt sjeldne i typiske Brukstilfeller
utvikling og Feilsøkingsforbedringer
art tilbyr en rekke funksjoner for å forbedre apputvikling og feilsøking.
Støtte for sampling profiler
Historisk har utviklere brukt Traceviewtool (designet for tracingapplication kjøring) som en profiler. Mens Traceview gir nyttig informasjon, har resultatene På Dalvik blitt skjevt av overhead per metode, og bruk av verktøyet påvirker kjøretiden betydelig.
ART legger til støtte for en dedikert sampling profiler som ikke har theselimitations. Dette gir en mer nøyaktig visning av apputførelse utenbetydelig nedgang. Prøvetaking støtte ble lagt Til Traceview forDalvik I KitKat utgivelsen.
Støtte for flere feilsøkingsfunksjoner
ART støtter en rekke nye feilsøkingsalternativer, spesielt i monitor-andgarbage-samlingsrelatert funksjonalitet. For eksempel kan du:
- Se hva låser holdes i stabelen spor, deretter hoppe til tråden som holder en lås.
- Spør hvor mange forekomster det er av en gitt klasse, be om å se forekomstene, og se hvilke referanser som holder et objekt live.
- Filtrer hendelser (som stoppunkt) for en bestemt forekomst.
- Se verdien som returneres av en metode når den avsluttes (ved hjelp av «metode-exit» – hendelser).
- Angi field watchpoint for å suspendere utførelsen av et program når et bestemt felt åpnes og / eller endres.
Forbedret diagnostisk detalj i unntak og krasjrapporter
ART gir deg så mye kontekst og detaljer som mulig når unntakstid forekommer. ART gir utvidet unntaksdetalj for java.lang.ClassCastException
,java.lang.ClassNotFoundException
og java.lang.NullPointerException
.(Senere Versjoner av Dalvik ga utvidet unntaksdetaljer for java.lang.ArrayIndexOutOfBoundsException
og java.lang.ArrayStoreException
, som nå inkluderer størrelsen på matrisen og offset utenfor grensene, Og ARTdoes dette også.)
for eksempel viser java.lang.NullPointerException
nå informasjon om hva appen prøvde å gjøre med nullpekeren,for eksempel feltet appen prøvde å skrive til, eller metoden den prøvde å ringe. Her er noen typiske eksempler:
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 gir også forbedret kontekstinformasjon i app native krasjrapporter, ved å inkludere Både Java og native stack informasjon.