Dalvik的内存模型和Java的记忆模型一样吗?

Dalvik的内存模型和Java的记忆模型一样吗?我特别感兴趣的是引用和非/非基元变量的读取和写入是否是原子的,但我也想知道两个平台的内存模型之间是否存在任何差异。longdouble


答案 1

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

截至3.0(Honeycomb),大多数部分都已到位,但一些小问题被忽略了,在实践中很难遇到(例如,在最终确定过程中的一些边缘情况)。

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

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


答案 2

Dalvik来源中有一份文件说:

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

这应该意味着行为与在适当的Java中相同。不管它是否真的是,我不知道。


推荐