¿Qué es Dalvik y Dalvik-cache?

80

Sé que esta puede ser una pregunta básica en Android. Pero, ¿qué es Dalvik y dalvik-cache?

Asesino de Android
fuente

Respuestas:

136

Dalvik es la máquina virtual que usa Android. Generalmente se considera una máquina virtual Java, aunque esto no es exactamente correcto. Utiliza un modelo de objetos que es idéntico a Java y su modelo de memoria también es casi equivalente. Pero la VM dalvik es una VM basada en registros, a diferencia de las VM de Java, que se basan en pilas.

En consecuencia, utiliza un código de bytes completamente diferente al de Java. Sin embargo, el SDK de Android incluye la herramienta dx para traducir códigos de bytes de Java a códigos de bytes dalvik, por lo que puede escribir aplicaciones de Android en Java.

Cuando dices " dalvik-cache ", supongo que te refieres al directorio / data / dalvik-cache que se puede encontrar en los dispositivos Android típicos. Cuando instala una aplicación en Android, realiza algunas modificaciones y optimizaciones en el archivo dex de esa aplicación (el archivo que contiene todo el código de bytes dalvik para la aplicación). Luego, almacena en caché el archivo odex ( dex optimizado ) resultante en el directorio / data / dalvik-cache , para que no tenga que realizar el proceso de optimización cada vez que carga una aplicación.

buena referencia

JesúsFreke
fuente
15
¿Qué pasa si elimino estos Dalvik Cache? ¿Habrá algún efecto, excepto que la aplicación tardará en cargarse ya que necesita reconstruir su Dalvik Cache?
Swanand
16
Correcto. No hay ningún efecto, aparte de aumentar el tiempo de carga siguiente, ya que se reconstruye.
JesusFreke
Como alguien publicó en otra pregunta duplicada, aquí está su enlace wiki gratuito "El caché de Dalvik es una parte esencial de su Android. Puede leer más sobre él aquí: en.wikipedia.org/wiki/Dalvik_%28software%29 "
qneill
1
¿Por qué Android Lollipop (versión 5) todavía tiene caché Dalvik ahora que la máquina virtual es ART? Algunas personas me dijeron que es por compatibilidad, pero he notado que ocupa mucho espacio (alrededor de 900 MB).
desarrollador de Android
3
Art compila el archivo dex en código nativo. Ese código compilado es lo que ahora se almacena en dalvik-cache, con art.
JesusFreke
3

Dalvik es la máquina virtual basada en Java que ejecuta aplicaciones de Android en Android. Dalvik-cache es el área de caché para Dalvik VM, se crea cuando Dalvik VM optimiza su aplicación para su ejecución.

Si lo desea, puede buscar más en Internet sobre las diferencias entre los códigos de operación de VM de Dalvik y los códigos de operación de VM de Java "normales".

omermuhammed
fuente
0

Los cachés de Dalvik no son más que la compilación temporal del código de la aplicación que se almacena como ejecutables. Como estos se pueden compilar dinámicamente a partir del código de la aplicación original que se encuentra fuera de la caché de Dalvik, puede borrar la caché de Dalvik sin ninguna penalización real.

usuario5065310
fuente
@AndroidKiller que serían bytecode o imágenes binarias, dependiendo de la presencia de Dalvik o ART. No imágenes gráficas.
Neil Steiner