Що таке 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.