Я знаю, что это может быть основным вопросом в Android. Но что такое Dalvik и dalvik-cache?
Что такое Dalvik и dalvik-cache?
Ответ 1
Dalvik - это виртуальная машина, используемая Android. Обычно это считается виртуальной машиной Java, хотя это не совсем правильно. Он использует объектную модель, которая идентична Java, и ее модель памяти также почти эквивалентна. Но dalvik VM - это виртуальная машина на основе регистров, в отличие от виртуальных машин Java, которые основаны на стеках.
Соответственно, он использует совершенно другой байт-код, чем Java. Тем не менее, Android SDK включает в себя инструмент dx для перевода байт-кода Java в байт-код dalvik, поэтому вы можете писать приложения Android на Java.
Когда вы говорите "dalvik-cache", я предполагаю, что вы имеете в виду каталог /data/dalvik-cache, который можно найти на обычных устройствах Android. Когда вы устанавливаете приложение на Android, оно выполняет некоторые изменения и оптимизации в этом файле dex приложения (файл, который содержит все байт-коды dalvik для приложения). Затем он кэширует полученный файл odex (оптимизированный dex) в каталоге /data/dalvik-cache, поэтому ему не нужно выполнять процесс оптимизации каждый раз при загрузке приложения.
Ответ 2
Dalvik - виртуальная машина на основе Java, которая запускает Android-приложения на Android. Dalvik-cache - область кэша для Dalvik VM, она создается, когда Dalvik VM оптимизирует ваше приложение для работы.
Вы можете посмотреть в Интернете больше о различиях между op-кодами Dalvik VM и "нормальными" Java-командами Java VM, если хотите.
Ответ 3
Dalvik Caches - это не что иное, как временная компиляция кода приложения, хранящегося в качестве исполняемых файлов. Поскольку они могут быть скомпилированы динамически из исходного кода приложения, сидящего за пределами кэша Dalvik, вы можете очистить кэш Dalvik без какого-либо реального штрафа.
Ответ 4
Dalvik - это программное обеспечение с открытым исходным кодом, первоначально написанное Дэн Борнштейном, который назвал его после рыбацкой деревни Далвик в Эйяфьордуре, Исландия.