30

Dalvik 的内存模型和Java 的一样吗?long我对引用和非/非原始变量的读写是否double是原子的特别感兴趣,但我也想知道两个平台的内存模型之间是否有任何差异。

4

3 回答 3

62

从 4.0(Ice Cream Sandwich)开始,Dalvik 的行为应该与 JSR-133(Java 内存模型)相匹配。

从 3.0 (Honeycomb) 开始,大部分部件都已到位,但忽略了一些在实践中很难遇到的小问题(例如,最终确定中的一些边缘情况)。

从 2.3 (Gingerbread) 开始,Dalvik 在单处理器上通常是正确的,但是缺少在 SMP 硬件上正确行为所需的一些关键特性(例如正确的final字段处理)。

前姜饼,根本没有记忆障碍,基本的东西都volatile long被打破了。

于 2011-01-06T01:02:09.740 回答
13

Dalvik 源中有一个文件说:

从用 Java 编程语言编写或以相同方式针对 .class 文件的一段代码的角度来看,Dalvik VM 旨在以完全符合该语言定义的方式运行。也就是说,在 Dalvik 中运行的代码的行为与在任何其他虚拟机中运行的代码相同。

这应该意味着行为与正确的 Java 相同。不管是不是真的,我不知道。

于 2011-01-03T21:07:03.070 回答
0

规范说对 32 位数字(非双精度、非长数字)的所有操作都是原子的。不能保证对 64 位数字的操作也是原子的。

于 2011-01-03T20:43:02.887 回答