Co to jest Dalvik i dalvik-cache?

80

Wiem, że to może być podstawowe pytanie w Androidzie. Ale co to jest Dalvik i dalvik-cache?

Android Killer
źródło

Odpowiedzi:

136

Dalvik to maszyna wirtualna używana przez Androida. Zwykle jest uważany za wirtualną maszynę Java, chociaż nie jest to dokładnie poprawne. Używa modelu obiektowego, który jest identyczny z Javą, a jego model pamięci jest również prawie równoważny. Ale maszyna wirtualna dalvik jest maszyną wirtualną opartą na rejestrze, w przeciwieństwie do maszyn wirtualnych Java, które są oparte na stosie.

W związku z tym używa zupełnie innego kodu bajtowego niż Java. Jednak Android SDK zawiera narzędzie dx do tłumaczenia kodu bajtowego Java na kod bajtowy dalvik, dzięki czemu możesz pisać aplikacje na Androida w Javie.

Kiedy mówisz „ dalvik-cache ”, zakładam, że masz na myśli katalog / data / dalvik-cache, który można znaleźć na typowych urządzeniach z Androidem. Podczas instalowania aplikacji w systemie Android przeprowadza ona pewne modyfikacje i optymalizacje w pliku dex tej aplikacji (pliku zawierającym cały kod bajtowy dalvik aplikacji). Następnie buforuje wynikowy plik odex ( zoptymalizowany dex ) w katalogu / data / dalvik-cache , dzięki czemu nie musi przeprowadzać procesu optymalizacji za każdym razem, gdy ładuje aplikację.

dobre odniesienie

JesusFreke
źródło
15
Co jeśli usunę te pamięci podręczne Dalvik? Czy będzie jakiś efekt, poza tym, że załadowanie aplikacji zajmie trochę czasu, ponieważ musi odbudować pamięć podręczną Dalvik?
Swanand
16
Poprawny. Nie ma żadnego efektu, poza zwiększeniem czasu następnego ładowania, ponieważ jest odbudowywany.
JesusFreke,
Jak ktoś opublikował w innym zduplikowanym pytaniu, oto Twój darmowy link wiki „Pamięć podręczna Dalvik jest istotną częścią Twojego Androida. Możesz przeczytać więcej na ten temat tutaj: en.wikipedia.org/wiki/Dalvik_%28software%29
qneill
1
Dlaczego Android Lollipop (wersja 5) nadal ma pamięć podręczną Dalvik teraz, gdy maszyną wirtualną jest ART? Niektórzy mówili mi, że to dla kompatybilności, ale zauważyłem, że zajmuje dużo miejsca (około 900 MB).
programista Androida
3
Art kompiluje plik dex do kodu natywnego. Ten skompilowany kod jest teraz przechowywany w pamięci podręcznej dalvik, razem z art.
JesusFreke
3

Dalvik to maszyna wirtualna oparta na Javie, która uruchamia aplikacje Android na Androida. Dalvik-cache to obszar pamięci podręcznej dla Dalvik VM, jest on tworzony, gdy Dalvik VM optymalizuje Twoją aplikację do działania.

Jeśli chcesz, możesz poszukać więcej w Internecie na temat różnic między kodami operacyjnymi maszyn wirtualnych Dalvik a „normalnymi” kodami operacyjnymi maszyn wirtualnych Java.

omermuhammed
źródło
0

Pamięci podręczne Dalvik to nic innego jak tymczasowa kompilacja kodu aplikacji przechowywanego jako pliki wykonywalne. Ponieważ mogą one być kompilowane dynamicznie z oryginalnego kodu aplikacji znajdującego się poza Dalvik Cache, możesz wyczyścić Dalvik Cache bez żadnych realnych kar.

user5065310
źródło
@AndroidKiller to byłby kod bajtowy lub obraz binarny, w zależności od obecności Dalvik lub ART. Nie graficzne obrazy.
Neil Steiner
0

Pamięć podręczna Dalvik nie jest już częścią nowoczesnych wersji Androida; Android 4.4 KitKat był ostatnim, który wykorzystał tę konstrukcję. Więcej informacji można znaleźć pod adresem https://en.wikipedia.org/wiki/Dalvik_(software) .

Nosegear
źródło