30

Dalvik のメモリ モデルはJavaのメモリ モデルと同じですか? long参照変数と非プリミティブ変数の読み取りと書き込みがアトミックかどうかに特に関心がありますdoubleが、2 つのプラットフォームのメモリ モデルに違いがあるかどうかも知りたいです。

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 ビットの数値 (double や long 以外の数値) に対するすべての操作はアトミックであると規定されています。64 ビット数値の操作もアトミックであるという保証はありません。

于 2011-01-03T20:43:02.887 に答える