Android Runtime (ART) este runtime gestionate utilizate de aplicații și unele systemservices pe Android. Arta și predecesorul său Dalvik au fost create inițialîn special pentru proiectul Android. ART ca runtime execută formatul DalvikExecutable și caietul de sarcini bytecode Dex.
ART și Dalvik sunt runtimes compatibile care rulează DEX bytecode, astfel încât appsdeveloped pentru Dalvik ar trebui să funcționeze atunci când rulează cu ART. Cu toate acestea, uneletehnicile care lucrează la Dalvik nu lucrează la artă. Pentru informații desprecele mai importante probleme, consultați Verificareacomportamentul aplicației pe runtime Android (ART).
caracteristici de artă
iată câteva dintre caracteristicile majore implementate de ART.
înainte de timp (AOT) compilare
ART introduce înainte de timp (AOT) compilare, care poate îmbunătăți appperformance. ART are, de asemenea, o verificare mai strictă a timpului de instalare decât Dalvik.
la momentul instalării, ART compilează aplicații utilizând instrumentul on-devicedex2oat. Acest utilitar acceptă fișiere DEX ca intrare și genereazăo aplicație executabilă compilată pentru dispozitivul țintă. Utilitarul ar trebui să poatăcompilați toate fișierele DEX valide fără dificultate. Cu toate acestea, unele instrumente post-procesare produc fișiere nevalide care pot fi tolerate de Dalvik, dar nu pot fi compilate de ART. Pentru mai multe informații, consultați Abordareaprobleme de colectare a gunoiului.
îmbunătățirea colectării gunoiului
colectarea gunoiului (GC) este foarte consumatoare de resurse, ceea ce poate afecta performanța unei aplicații,rezultând o afișare agitată, o reacție slabă a UI și alte probleme. Arta îmbunătățește colecția de gunoaie în mai multe moduri:
- proiectare în mare parte concurentă cu o singură pauză GC
- copiere concurentă pentru a reduce utilizarea și fragmentarea memoriei de fundal
- lungimea pauzei GC este independentă de dimensiunea heap
- colector cu un timp total GC mai mic pentru cazul special de curățare a obiectelor recent alocate, de scurtă durată
- ergonomie îmbunătățită a colectării gunoiului, făcând colecțiile de gunoi în timp util, ceea ce face ca
GC_FOR_ALLOC
evenimente extrem de rare în cazuri tipice de utilizare
îmbunătățiri de dezvoltare și depanare
art oferă o serie de caracteristici pentru a îmbunătăți dezvoltarea și depanarea aplicațiilor.
suport pentru eșantionarea profiler
istoric, dezvoltatorii au folosit Traceviewtool (proiectat pentru tracingapplication execution) ca un profiler. În timp ce Traceview oferă informații utile,rezultatele sale pe Dalvik au fost denaturate de overhead per-method-call, și useof instrumentul afectează în mod vizibil performanța timpului de rulare.
ART adaugă suport pentru un profiler de eșantionare dedicat, care nu are theselimitations. Acest lucru oferă o imagine mai precisă a execuției aplicației fărăîncetinirea semnificativă. Suportul de eșantionare a fost adăugat la Traceview forDalvik în versiunea KitKat.
suport pentru mai multe funcții de depanare
ART acceptă o serie de noi opțiuni de depanare, în special în funcționalitatea legată de colecția monitor – andgarbage. De exemplu, puteți:
- vedeți ce încuietori sunt ținute în urmele stivei, apoi săriți la firul care ține o încuietoare.
- întrebați câte instanțe vii există dintr-o anumită clasă, cereți să vedeți instanțele și să vedeți ce referințe păstrează un obiect viu.
- filtrați evenimentele (cum ar fi punctul de întrerupere) pentru o anumită instanță.
- vedeți valoarea returnată printr-o metodă atunci când iese (folosind evenimente „metodă-ieșire”).
- Set field watchpoint pentru a suspenda executarea unui program atunci când un anumit câmp este accesat și/sau modificat.
detaliu de diagnostic îmbunătățit în excepții și rapoarte de avarie
ART vă oferă cât mai mult context și detalii posibil atunci când apar excepții în timpul rulării. ART oferă detalii extinse de excepție pentru java.lang.ClassCastException
,java.lang.ClassNotFoundException
și java.lang.NullPointerException
.(Versiunile ulterioare ale Dalvik au furnizat detalii de excepție extinse pentru java.lang.ArrayIndexOutOfBoundsException
și java.lang.ArrayStoreException
, care includ acum dimensiunea matricei și offsetul în afara limitelor, iar ARTdoes și acest lucru.)
de exemplu, java.lang.NullPointerException
afișează acum informații despre ce încerca aplicația să facă cu indicatorul nul,cum ar fi câmpul în care încerca să scrie aplicația sau metoda pe care încerca să o apeleze. Iată câteva exemple tipice:
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 oferă,de asemenea, informații de context îmbunătățite în rapoartele de blocare native ale Aplicației, incluzând atât informații Java, cât și informații despre stivă nativă.