Środowisko wykonawcze Androida (ART) to zarządzane środowisko wykonawcze używane przez aplikacje i niektóre systemy usług na Androidzie. ART i jego poprzednik Dalvik na potrzeby projektu na Androida. ART, gdy środowisko wykonawcze wykonuje polecenie Dalvik pliku wykonywalnego (DEX) i specyfikacji kodu bajtowego DEX.
ART i Dalvik to kompatybilne środowiska wykonawcze obsługujące kod bajtowy DEX, dzięki czemu aplikacje opracowany dla Dalvik powinien działać w połączeniu z ART. Jednak niektóre które działają na Dalviku, nie działają w ART. Aby uzyskać informacje na temat z najważniejszymi problemami, przeczytaj artykuł Weryfikacja działania aplikacji w środowisku wykonawczym Androida (ART).
Funkcje ART
Oto kilka głównych funkcji wdrożonych przez ART.
Kompilacja danych z wyprzedzeniem (AOT)
ART wprowadza kompilację danych z wyprzedzeniem (AOT), która może poprawić skuteczność reklam. ART ma też ściślejszą weryfikację podczas instalacji niż Dalvik.
W momencie instalacji ART kompiluje aplikacje, korzystając z dex2oat. Jako dane wejściowe to narzędzie akceptuje pliki DEX oraz generuje skompilowany plik wykonywalny aplikacji przeznaczony na urządzenie docelowe. Narzędzie powinno mieć możliwość pozwala bez problemu skompilować wszystkie prawidłowe pliki DEX. Jednak niektóre procesy końcowe narzędzia generują nieprawidłowe pliki, które mogą być tolerowane przez Dalvik, ale nie mogą opracowane przez ART. Więcej informacji można znaleźć w sekcji Adresowanie problemy z odpadaniem.
Ulepszone usuwanie czyszczenia pamięci
Czyszczenie pamięci masowej wymaga dużych ilości zasobów, co może pogorszyć wydajność aplikacji. zacinanie się wyświetlania, słabą responsywność interfejsu użytkownika i inne problemy. ART poprawia śmieci można zbierać dane na kilka sposobów:
- W większości równoczesny projekt z 1 wstrzymaniem GC
- Jednoczesne kopiowanie w celu zmniejszenia wykorzystania pamięci w tle i fragmentacji
- Długość wstrzymania GC jest niezależne od rozmiaru sterty
- Kolektor z niższym łącznym czasem GC w szczególnym przypadku czyszczenia ostatnio przydzielone obiekty o ograniczonym czasie funkcjonowania;
- Ulepszona ergonomia czyszczenia pamięci, która umożliwia równoczesne usuwanie odpadów
przeznaczeniu kolekcji na czas, dzięki czemu
GC_FOR_ALLOC
zdarzenia niezwykle rzadkie w typowych przypadkach użycia
Ulepszenia w zakresie programowania i debugowania
ART oferuje wiele funkcji usprawniających tworzenie i debugowanie aplikacji.
Obsługa narzędzia do profilowania próbkowania
W przeszłości deweloperzy używali Traceview. narzędzie (stworzone do śledzenia wykonywania aplikacji) jako program do profilowania. Traceview dostarcza przydatnych informacji, jego wyniki w Dalvik zostały zniekształcone przez narzut na wywołania metody i zastosuj narzędzia w znaczący sposób wpływa na wydajność środowiska wykonawczego.
ART dodaje obsługę dedykowanego programu do profilowania próbek, który nie ma tych funkcji i ograniczeniach. Zapewnia to dokładniejszy obraz działania aplikacji bez znaczne spowolnienie. Obsługa próbkowania została dodana do Traceview dla: Dalvik w wersji KitKat.
Obsługa dodatkowych funkcji debugowania
ART obsługuje wiele nowych opcji debugowania, szczególnie przy monitorowaniu funkcję czyszczenia pamięci. Możesz na przykład:
- Zobacz, jakie blokady są zablokowane w zrzutach stosu, a następnie przejdź do wątku, który trzyma blokadę.
- Zapytaj o liczbę aktywnych wystąpień danej klasy. i sprawdzić, które odwołania utrzymują aktywność obiektu.
- Filtruj zdarzenia (np. punkt przerwania) dla określonej instancji.
- zobaczyć wartość zwracaną przez metodę w chwili jej wyjścia (za pomocą parametru „method-exit”); wydarzenia).
- Ustaw punkt obserwacji w terenie, aby zawiesić wykonywanie programu, gdy określony uzyskać dostęp do pola i/lub je zmodyfikować.
Ulepszone szczegóły diagnostyczne w wyjątkach i raportach o awariach
ART zapewnia jak najwięcej informacji kontekstowych i szczegółowych
wystąpienia. ART udostępnia rozszerzone szczegóły wyjątku dla: java.lang.ClassCastException
,
java.lang.ClassNotFoundException
,
i java.lang.NullPointerException
.
(W późniejszych wersjach Dalvik zostały podane rozszerzone szczegóły wyjątku dla: java.lang.ArrayIndexOutOfBoundsException
i java.lang.ArrayStoreException
,
które zawierają teraz rozmiar tablicy i przesunięcie poza granicą, a funkcja ART
również ten proces).
Na przykład: java.lang.NullPointerException
pokazuje teraz informacje o tym, do czego aplikacja próbowała użyć wskaźnika zerowego,
takie jak pole, w którym aplikacja próbowała zapisać dane, lub metoda
. Oto kilka typowych przykładów:
java.lang.NullPointerException: Attempt to write to field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
ART udostępnia też ulepszone informacje kontekstowe w raportach o awariach aplikacji uwzględniając informacje o Javie i natywnym stosie.
Zgłaszanie problemów
Jeśli napotkasz problemy, które nie są spowodowane problemami z JNI dotyczącymi aplikacji, zgłoś
w ramach programu Android Open Source
Project Issue Tracker. Dodaj atrybut adb bugreport
i link do
aplikację w Sklepie Google Play, jeśli jest dostępna. W przeciwnym razie, jeśli to możliwe, załącz
plik APK, który odtwarza problem.