Dalvik - это виртуальная машина, используемая Android.Обычно это виртуальная машина Java, хотя это не совсем правильно.Он использует объектную модель, идентичную Java, и его модель памяти также почти эквивалентна.Но виртуальная машина dalvik - это виртуальная машина на основе регистров, в отличие от виртуальных машин Java, которые основаны на стеке.
Соответственно, она использует совершенно иной байт-код, чем Java.Однако Android SDK включает в себя инструмент dx для перевода байт-кода Java в байт-код dalvik, поэтому вы можете писать приложения для Android на Java.
Когда вы говорите " dalvik"-cache", я предполагаю, что вы имеете в виду каталог / data / dalvik-cache , который можно найти на типичных устройствах Android.Когда вы устанавливаете приложение на Android, оно выполняет некоторые модификации и оптимизации для файла dex этого приложения (файла, который содержит весь байт-код dalvik для приложения).Затем он кэширует результирующий файл odex ( optimized dex ) в каталоге / data / dalvik-cache , поэтому он не должен выполнять процесс оптимизации каждый раз, когда загружаетприложение.
![good reference](https://i.stack.imgur.com/rVSX8.png)