Android runtime (ART) je spravované runtime používané aplikace a některé systemservices na Android. ART a jeho předchůdce Dalvik byly původně vytvořenyspecificky pro projekt Android. ART jako runtime spustí DalvikExecutable formát a Dex bytecode SPECIFIKACE.
ART a Dalvik jsou kompatibilní Runtime běží Dex bytecode, takže appsdeveloped pro Dalvik by měl fungovat při spuštění s ART. Některé techniky, které pracují na Dalviku, však nefungují na umění. Informace o nejdůležitějších problémech naleznete v části chování aplikace Verifyingapp v Runtime systému Android (ART).
umělecké funkce
zde jsou některé z hlavních funkcí implementovaných ART.
ahead-of-time (AOT) kompilace
ART zavádí ahead-of-time (AOT) kompilace, která může zlepšit appperformance. ART má také přísnější ověření doby instalace než Dalvik.
v době instalace ART kompiluje aplikace pomocí nástroje on-devicedex2oat. Tento nástroj přijímá soubory DEX jako vstup a generujekompilovaný spustitelný soubor aplikace pro cílové zařízení. Nástroj by měl být schopenkompilovat všechny platné soubory DEX bez problémů. Nicméně, některé post-processingtools produkují neplatné soubory, které mohou být tolerovány Dalvik, ale nemůže becompiled podle čl. Další informace naleznete v části Adresedinggarbage Collection Issues.
Lepší garbage collection
Garbage collection (GC) je velmi náročné na zdroje, které mohou poškodit aplikace, výkon,což vede k trhané zobrazení, špatnou odezvu uživatelského ROZHRANÍ a další problémy. Umění zlepšuje odpadky sbírkou několika způsoby:
- Většinou souběžné design s jediným GC pauza
- Souběžné kopírování snížit pozadí využití paměti a fragmentace
- délka GC pauza je nezávislý na velikost haldy
- Kolektoru s nižší celkové doby GC pro zvláštní případ čištění v poslední době přidělena, krátký-žil objekty
- Lepší sběr odpadků ergonomie, což souběžných kolekcí uvolnění více včas, což činí
GC_FOR_ALLOC
události velmi vzácné v typických případech použití
Vývoj a ladění vylepšení
UMĚNÍ nabízí řadu funkce pro zlepšení vývoje a ladění aplikací.
Podpora pro vzorkování profiler
Historicky, vývojáři použili Traceviewtool (určeno pro tracingapplication provedení) jako profiler. Zatímco Traceview poskytuje užitečné informace, jeho výsledky na Dalviku byly zkresleny režií volání podle metody a použití nástroje znatelně ovlivňuje výkon běhu.
ART přidává podporu pro vyhrazený vzorkovací profiler, který nemá theselimitations. To poskytuje přesnější pohled na provádění aplikací bezvýznamné zpomalení. Podpora vzorkování byla přidána do Traceview forDalvik ve verzi KitKat.
Podpora pro více ladicích funkcí,
UMĚNÍ podporuje řadu nových možností ladění, zejména v monitoru – andgarbage kolekce-související funkce. Můžete například:
- podívejte se, jaké zámky jsou drženy ve stopách stohu, pak skočte na vlákno, které drží zámek.
- zeptejte se, kolik živých instancí je dané třídy, požádejte o zobrazení instancí a zjistěte, jaké odkazy udržují objekt živý.
- filtrujte události (jako bod přerušení) pro konkrétní instanci.
- viz hodnotu vrácenou metodou při jejím ukončení (pomocí událostí „method-exit“).
- nastavte pole watchpoint pro pozastavení provádění programu, když je k určitému poli přistupováno a/nebo upraveno.
vylepšené diagnostické detaily ve výjimkách a zprávách o selhání
ART vám dává co nejvíce kontextu a detailů, jak je to možné při výjimkách runtime. ART poskytuje rozšířené detaily výjimek pro java.lang.ClassCastException
,java.lang.ClassNotFoundException
a java.lang.NullPointerException
.(Pozdější verze Dalviku poskytly rozšířené detaily výjimek pro java.lang.ArrayIndexOutOfBoundsException
a java.lang.ArrayStoreException
, které nyní zahrnují velikost pole a offset mimo hranice, a ARTdoes to také.)
například, java.lang.NullPointerException
nyní ukazuje informace o tom, co aplikace, se snažil udělat s nulový ukazatel,jako je například pole aplikace se snažil napsat, nebo způsob, jak se to snaží tocall. Zde jsou některé typické příklady:
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
UMĚNÍ také poskytuje vylepšené kontextové informace v aplikaci nativní zprávy o selhání,včetně obou Java a nativní stack informace.