2011-01-03 6 views

Respuesta

58

A partir de 4.0 (Ice Cream Sandwich), el comportamiento de Dalvik debe coincidir con JSR-133 (el Modelo de memoria de Java).

A partir de 3.0 (Honeycomb), la mayoría de las piezas estaban en su lugar, pero se han pasado por alto algunas cosas menores que serían difíciles de encontrar en la práctica (por ejemplo, algunos casos extremos en la finalización).

A partir de 2.3 (Gingerbread), Dalvik era generalmente correcto en los uniprocesadores, pero algunas características clave requeridas para un comportamiento correcto en el hardware SMP (por ejemplo, el correcto manejo de campo final) faltaban.

Pre-Gingerbread, no había barreras de memoria en absoluto, y cosas básicas como volatile long estaban rotas.

+7

¿Dónde leíste esta información? –

+62

Trabajo en Dalvik. – fadden

+8

Relativamente relacionado: Android + SMP Primer en http://developer.android.com/training/articles/smp.html – fadden

0

La especificación dice que todas las operaciones en números de 32 bits (los números no dobles, no largos) son atómicos. No hay garantía de que las operaciones en números de 64 bits sean atómicas también.

+4

¿Qué especificación es esta? Si se refiere a la especificación de Java, creo que el objetivo de la pregunta es preguntar si Dalvik implementa esa parte de la semántica de Java. Si se refiere a alguna otra especificación, ¿alguna posibilidad de un enlace? –

13

Hay a document in the Dalvik source que dice:

Desde el punto de vista de un fragmento de código escrito en el lenguaje de programación Java o dirigido en la misma forma de archivos .class, la máquina virtual Dalvik pretende comportarse de una forma que sea totalmente coherente con la definición del idioma. 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 realmente es o no, no tengo idea.

Cuestiones relacionadas