Le modèle de mémoire de Dalvik est-il le même que celui de Java ? Je suis particulièrement intéressé à savoir si les lectures et les écritures de référence et les variables primitives non long
/ non double
sont atomiques, mais je voudrais également savoir s'il existe des différences entre les modèles de mémoire de deux plates-formes.
Réponses
Trop de publicités?Comme de 4.0 (Ice Cream Sandwich), Dalvik du comportement doit correspondre avec la JSR-133 (la Java du Modèle de Mémoire).
Comme d'3.0 (Honeycomb), la plupart des morceaux sont en place, mais quelques petites choses ont été négligés qu'il serait difficile de rencontrer dans la pratique (par exemple, dans certains cas limites de finalisation).
Que de 2.3 (Gingerbread), Dalvik a été généralement correcte sur uniprocessors, mais certaines fonctions clés nécessaires pour le bon comportement sur SMP matériel (p. ex. appropriée final
de manutention) est manquant.
Pré-pain d'épices, il n'y avait pas de barrières de mémoire, et des trucs de base comme volatile long
a été brisé.
Il y a un document dans le Dalvik source qui dit:
Du point de vue d'un morceau de code écrit dans le langage de programmation Java ou ciblée, de la même manière .les fichiers de classe, le Dalvik VM vise à se comporter d'une manière qui est pleinement compatible avec le langage de définition. C'est le code qui s'exécute dans Dalvik va se comportent de la même que dans n'importe quelle autre machine virtuelle.
Qui devrait signifier que le comportement est le même que dans le bon Java. Si elle ne l'est réellement ou pas, je n'ai aucune idée.