Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是Dalvik';s内存模型与Java';s_Java_Android_Dalvik_Memory Model_Java Memory Model - Fatal编程技术网

是Dalvik';s内存模型与Java';s

是Dalvik';s内存模型与Java';s,java,android,dalvik,memory-model,java-memory-model,Java,Android,Dalvik,Memory Model,Java Memory Model,Dalvik的记忆模型和你的一样吗?我特别感兴趣的是引用和非long/non-double原语变量的读写是否是原子的,但我也想知道这两个平台的内存模型之间是否有任何差异。规范中说,所有对32位数字的操作都是原子的(非双精度、非长数值)是原子的。不能保证对64位数字的操作也是原子的。有这样一种说法: 从用Java编程语言编写的或以相同方式指向.class文件的代码来看,Dalvik VM旨在以完全符合该语言定义的方式运行。也就是说,在Dalvik中运行的代码的行为将与在任何其他虚拟机中运行的代码的

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

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

有这样一种说法:

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

这意味着行为与正常Java中的行为相同。不管它是否真实,我都不知道。

从4.0(冰淇淋三明治)开始,Dalvik的行为应该与JSR-133(Java内存模型)相匹配

从3.0(蜂巢)开始,大部分零件已就位,但忽略了一些在实践中很难遇到的小问题(例如,定稿中的一些边缘情况)

从2.3(姜饼)开始,Dalvik在单处理器上通常是正确的,但SMP硬件上正确行为所需的一些关键特性(例如正确的
最终
现场处理)缺失


在姜饼之前,根本没有内存障碍,像
volatile long
这样的基本东西被打破了。

这是哪种规范?如果你是指Java规范,我想问题的关键是问Dalvik是否实现了Java语义的这一部分。如果你是指其他规范,链接的可能性很小?Vaguely相关:以上SMP入门中的Android+SMP入门对于处理线程间共享内存的任何人来说都是必读的。非常感谢您将此链接起来!@fadden使用volatile fix进行双重检查锁定怎么样?如本文所述,它在安卓上有效吗?任何版本吗?在ART上有效吗?