Dalvik 的内存模型和Java 的一样吗?long
我对引用和非/非原始变量的读写是否double
是原子的特别感兴趣,但我也想知道两个平台的内存模型之间是否有任何差异。
问问题
5018 次
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 回答