Що таке Dalvik та dalvik-cache?


80

Я знаю, що це може бути основним питанням в Android. Але що таке Dalvik і dalvik-cache?

Відповіді:


136

Dalvik - це віртуальна машина, яка використовується Android. Зазвичай його вважають віртуальною машиною Java, хоча це не зовсім правильно. Він використовує об'єктну модель, ідентичну Java, і модель пам'яті також майже еквівалентна. Але віртуальна машина dalvik - це віртуальна машина на основі реєстру, на відміну від віртуальних машин Java, які базуються на стеку.

Відповідно, він використовує зовсім інший байт-код, ніж Java. Однак Android SDK включає інструмент dx для перекладу байт-коду Java в байт-код dalvik, саме тому ви можете писати програми для Android на Java.

Коли ви говорите " dalvik-cache ", я припускаю, що ви маєте на увазі каталог / data / dalvik-cache, який можна знайти на типових пристроях Android. Коли ви встановлюєте програму на Android, вона виконує деякі модифікації та оптимізацію файлу dex цієї програми (файл, що містить усі байт-коди dalvik для програми). Потім він кешує отриманий файл odex ( оптимізований dex ) в каталозі / data / dalvik-cache , так що йому не потрібно виконувати процес оптимізації кожного разу, коли він завантажує додаток.

хороша довідка


15
Що робити, якщо я видалю цей кеш Dalvik? Чи буде якийсь ефект, окрім того, що програма займе час для завантаження, оскільки їй потрібно відновити кеш Dalvik?
Swanand

16
Правильно. Ефекту немає, крім збільшення наступного часу завантаження, оскільки його відбудовують.
JesusFreke

Як хтось публікував чергове повторне запитання, ось ваше безоплатне вікі-посилання "Кеш-пам’ять Dalvik є важливою частиною вашого Android. Детальніше про це ви можете прочитати тут: en.wikipedia.org/wiki/Dalvik_%28software%29 "
qneill

1
Чому Android Lollipop (версія 5) все ще має кеш Dalvik тепер, коли віртуальна машина є ART? Деякі люди казали мені, що це для сумісності, але я помітив, що це займає багато місця (близько 900 МБ).
розробник android

3
Art компілює файл dex у власний код. Цей скомпільований код - це те, що зараз зберігається в кеш-пам’яті dalvik з мистецтвом.
JesusFreke

3

Dalvik - це віртуальна машина на основі Java, яка запускає програми для Android на Android. Dalvik-cache - це область кешування для VM Dalvik, вона створюється, коли VM Dalvik оптимізує вашу програму для роботи.

Ви можете більше дізнатись в Інтернеті про різницю між кодами операційних кодів Dalvik VM та "звичайними" кодами Java VM, якщо хочете.


0

Кеш-пам’ятки Dalvik - це не що інше, як тимчасова компіляція коду програми, яка зберігається як виконувані файли. Оскільки їх можна динамічно компілювати з вихідного коду програми, що знаходиться поза кешем Dalvik, ви можете очистити кеш Dalvik без будь-яких реальних штрафних санкцій.


@AndroidKiller, який буде байт-кодом або двійковими зображеннями, залежно від присутності Dalvik або ART. Не графічні зображення.
Ніл Штайнер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.