az Android runtime (ART) az Android alkalmazások és egyes rendszerszolgáltatások által használt felügyelt futási idő. Az Art és elődje Dalvik eredetileg létrejöttkülönösen az Android projekthez. ART, mint a futásidejű végrehajtja a DalvikExecutable formátum és Dex bytecode specifikáció.
ART és Dalvik kompatibilis runtimes futó Dex bytecode, így appsdeveloped Dalvik működnie kell, ha fut ART. Azonban néhánya Dalvikon dolgozó technikák nem működnek a művészeten. A legfontosabb kérdésekkel kapcsolatos információkért lásd: Verifyingapp behavior on the Android runtime (ART).
ART jellemzők
Íme néhány a főbb jellemzői által végrehajtott ART.
idő előtti (AOT) összeállítás
az ART bemutatja az idő előtti (AOT) összeállítást, amely javíthatja az alkalmazás teljesítményét. Az ART szigorúbb telepítési idejű ellenőrzéssel is rendelkezik, mint a Dalvik.
telepítéskor az ART alkalmazásokat fordít az on-devicedex2oat eszközzel. Ez a segédprogram elfogadja Dex fájlokat bemenet és generatesa lefordított alkalmazás futtatható a céleszköz. A segédprogramnak képesnek kell lennieaz összes érvényes Dex fájlt nehézség nélkül lefordítani. Néhány utófeldolgozási eszköz azonban érvénytelen fájlokat állít elő, amelyeket a Dalvik tolerálhat, de a művészet nem fordíthat le. További információ: a hulladékgyűjtési problémák kezelése.
továbbfejlesztett szemétgyűjtés
a szemétgyűjtés (GC) nagyon erőforrás-igényes, ami ronthatja az alkalmazás teljesítményét,ami szaggatott megjelenítést, gyenge felhasználói felület érzékenységet és egyéb problémákat okozhat. A művészet számos módon javítja a szemétgyűjtést:
- többnyire egyidejű tervezés egyetlen GC szünettel
- egyidejű másolás a háttér memóriahasználat és a töredezettség csökkentése érdekében
- a GC szünet hossza független a kupac méretétől
- gyűjtő alacsonyabb teljes GC idővel a nemrégiben kiosztott, rövid életű tárgyak megtisztításának különleges esetére
- továbbfejlesztett szemétgyűjtési ergonómia, így az egyidejű szemétgyűjtések több időt igényelnek időszerű, ami
GC_FOR_ALLOC
események rendkívül ritka a tipikus használati esetek
fejlesztési és hibakeresés fejlesztések
art kínál számos funkciók javítása app fejlesztés és hibakeresés.
támogatás mintavételi profiler
történelmileg, a fejlesztők használják a Traceviewtool (tervezett tracingapplication végrehajtás), mint egy profiler. Míg a Traceview hasznos információkat nyújt, a Dalvik-on elért eredményeit eltorzította a metódusonkénti hívás költsége, és az eszköz használata észrevehetően befolyásolja a futási idő teljesítményét.
ART támogatja a dedikált mintavételi profiler, amely nem rendelkezik theselimitations. Ez pontosabb képet ad az alkalmazás végrehajtásáról anélkül, hogyjelentős lassulás. Mintavételi támogatást adtak a Traceview forDalvik-hoz a KitKat kiadásban.
további hibakeresési funkciók támogatása
az ART számos új hibakeresési lehetőséget támogat, különösen a monitor – andgarbage gyűjteményhez kapcsolódó funkciókban. Például a következőket teheti:
- nézze meg, milyen zárakat tartanak veremnyomokban, majd ugorjon a zárat tartó szálra.
- kérdezze meg, hogy hány élő példány van egy adott osztályból, kérdezze meg a példányokat, és nézze meg, hogy milyen hivatkozások tartják az objektumot élőben.
- események szűrése (például töréspont) egy adott példányhoz.
- lásd a metódus által visszaadott értéket, amikor kilép (a “metódus-kilépés” események használatával).
- a field watchpoint beállítása a program végrehajtásának felfüggesztésére egy adott mező elérésekor és/vagy módosításakor.
továbbfejlesztett diagnosztikai részletek a kivételekben és az összeomlási jelentésekben
az ART a lehető legtöbb kontextust és részletet adja meg futásidejű kivételek esetén. Az ART bővített kivételadatokat biztosít a java.lang.ClassCastException
,java.lang.ClassNotFoundException
és java.lang.NullPointerException
esetekre.(A Dalvik későbbi verziói bővített kivételrészletet adtak a java.lang.ArrayIndexOutOfBoundsException
és a java.lang.ArrayStoreException
számára,amelyek most tartalmazzák a tömb méretét és az Out-of-bounds offset-et, és az ARTdoes ezt is.)
például a java.lang.NullPointerException
most információkat jelenít meg arról,hogy az alkalmazás mit próbált csinálni a null mutatóval, például azt a mezőt, amelyre az alkalmazás megpróbált írni, vagy azt a módszert, amelyre megpróbálta felhívni. Íme néhány tipikus példa:
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
az ART továbbfejlesztett kontextusinformációkat is nyújt az alkalmazás natív összeomlási jelentéseiben, mind a Java, mind a natív vereminformációk bevonásával.