Środowisko wykonawcze Androida i Dalvik

Ś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.