55

アプリケーションごとに Dalvik 仮想マシン インスタンスが作成されますか? それとも、すべての Android アプリケーションが同じ Dalvik 仮想マシン インスタンスを共有しますか?

4

5 に答える 5

61

すべての Android アプリケーションは、Dalvik 仮想マシンの独自のインスタンスを使用して、独自のプロセスで実行されます。Dalvik は、デバイスが複数の VM を効率的に実行できるように作成されています。

Dalvik VM は.dex、最小限のメモリ フットプリントに最適化された Dalvik Executable ( ) 形式でファイルを実行します。

VM はレジスタ ベースであり、付属のツール.dexによって形式に変換された Java 言語コンパイラによってコンパイルされたクラスを実行します。dx

DVM の詳細については、What is... The Dalvik Virtual Machineも参照してください。

于 2012-11-27T05:34:21.483 に答える
31

ファイルは、ファイルを生成するため.javaに Java コンパイラ ( ) に渡されます。javac.class

すべての.classファイルがdxツールに渡され、単一のdexファイルが生成されます。

このdexファイルは Dalvik VM に渡され、最終的なマシン コードが生成されます。

最終的なマシン コードは、CPU に渡されて実行されます。

于 2014-09-04T06:08:43.607 に答える
14

apk の基本的なソース コードはすべて Java 言語です。このプロジェクトをビルドすると、すべての .java ファイルが .class に変換され、adk の dx ツールがすべての .class ファイルを classes.dex ファイルに変換します。この classes.dex ファイルは dalvik 仮想マシンで実行されます。

dalvik 仮想マシンの詳細については、http: //www.slideshare.net/jserv/understanding-the-dalvik-virtual-machineをご覧ください。

Dalvik 仮想マシンは、一度に複数の VM を実行することを目的としています。したがって、すべてのアプリは、@sahilMahajanMj が述べたように、Dalvik 仮想マシンの独自のインスタンスを使用して、独自のプロセスで実行されます。

そして、この classes.dex ファイルはさらに odex ファイルに最適化され、/dalvik/dalvik-cache に保存されます。odex の
詳細については、これをクリックしてください

Android の DVM が JVM ではない理由を知りたい場合は、これをクリックしてください。

于 2012-12-12T14:57:12.920 に答える