java - máquina - navegador dalvik
¿El modelo de memoria de Dalvik es el mismo que el de Java? (3)
A partir de la versión 4.0 (Ice Cream Sandwich), el comportamiento de Dalvik debe coincidir con el JSR-133 (el modelo de memoria Java).
A partir de la versión 3.0 (Honeycomb), la mayoría de las piezas estaban en su lugar, pero se habían pasado por alto algunas cosas menores que serían difíciles de encontrar en la práctica (por ejemplo, algunos casos de borde en la finalización).
A partir de la versión 2.3 (Gingerbread), Dalvik generalmente tenía razón en los procesadores, pero faltaban algunas características clave requeridas para el comportamiento adecuado en el hardware SMP (por ejemplo, el manejo adecuado del campo final
).
Antes del pan de jengibre, no existían barreras de memoria, y se rompieron elementos básicos como volatile long
.
¿El modelo de memoria de Dalvik es el mismo que el de Java''s ? Estoy particularmente interesado en saber si las lecturas y las escrituras de referencia y las variables primitivas no long
/ no double
son atómicas, pero también me gustaría saber si existen diferencias entre los modelos de memoria de las dos plataformas.
Hay un documento en la fuente de Dalvik que dice:
Desde el punto de vista de un fragmento de código escrito en el lenguaje de programación Java o dirigido de la misma manera a los archivos .class, la máquina virtual de Dalvik apunta a comportarse de una manera que sea totalmente consistente con la definición del lenguaje. Es decir, el código que se ejecuta en Dalvik se comportará de la misma manera que se ejecutaría en cualquier otra máquina virtual.
Lo que debería significar que el comportamiento es el mismo que en Java adecuado. Si es realmente o no, no tengo ni idea.
La especificación dice que todas las operaciones en números de 32 bits (los números no dobles, no largos) son atómicas. No hay garantía de que las operaciones en números de 64 bits también sean atómicas.