Próbuję dowiedzieć się, jakie różnice występują w środowiskach wykonawczych Dalvik i ART. Zdaję sobie sprawę, że ART nie korzysta już z Dalvik VM, jednak jedną z pierwszych rzeczy, które zauważyłem po zainstalowaniu wersji zapoznawczej Androida L, było to, że proces zygote nadal działa. Jeśli naprawdę pozbyli się maszyny wirtualnej Dalvik, czy to nie uczyniłoby procesu zygoty bezużytecznym? Co więcej, po sprawdzeniu kodu źródłowego wydanego przez AOSP, nadal pozostaje duża część Dalvik.
dalvik
art
5.0-lollipop
Jan
źródło
źródło
Odpowiedzi:
Zygote nie jest tak naprawdę związany z Dalvik, to tylko proces inicjacji. Zygote to metoda używana przez system Android do uruchamiania aplikacji. Zamiast zaczynać każdy nowy proces od zera, ładując cały system i system Android od nowa za każdym razem, gdy chcesz uruchomić aplikację, robi to ten proces raz, a następnie zatrzymuje się w tym momencie, zanim Zygote zrobi coś specyficznego dla aplikacji . Następnie, gdy chcesz uruchomić aplikację, proces Zygote rozwidla się, a proces potomny jest kontynuowany tam, gdzie został przerwany, ładując samą aplikację do maszyny wirtualnej.
Chociaż ta metoda została pierwotnie zaprojektowana dla Dalvik, nie ma powodu, dla którego ART nie powinien zachowywać się dokładnie tak samo. Nie musi kompilować aplikacji JIT podczas ich działania, ale nadal ma do załadowania wiele niezależnych od aplikacji rzeczy Java (tj. Całą platformę Android), więc warto używać tego samego widełek załadowana metoda rozpoczęcia nowych procesów.
Jest to naturalne w tak dużym projekcie, że pozostały resztki z Dalvik, które nadal są przydatne w świecie post-Dalvik, więc nie należy się dziwić, że istnieje inny kod, który został pierwotnie napisany jako część lub dla współpracować z Dalvik, który wciąż jest gotowy do użycia ART.
źródło