アプリケーションごとに Dalvik 仮想マシン インスタンスが作成されますか? それとも、すべての Android アプリケーションが同じ Dalvik 仮想マシン インスタンスを共有しますか?
5 に答える
すべての Android アプリケーションは、Dalvik 仮想マシンの独自のインスタンスを使用して、独自のプロセスで実行されます。Dalvik は、デバイスが複数の VM を効率的に実行できるように作成されています。
Dalvik VM は.dex
、最小限のメモリ フットプリントに最適化された Dalvik Executable ( ) 形式でファイルを実行します。
VM はレジスタ ベースであり、付属のツール.dex
によって形式に変換された Java 言語コンパイラによってコンパイルされたクラスを実行します。dx
DVM の詳細については、What is... The Dalvik Virtual Machineも参照してください。
ファイルは、ファイルを生成するため.java
に Java コンパイラ ( ) に渡されます。javac
.class
すべての.class
ファイルがdx
ツールに渡され、単一のdex
ファイルが生成されます。
このdex
ファイルは Dalvik VM に渡され、最終的なマシン コードが生成されます。
最終的なマシン コードは、CPU に渡されて実行されます。
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 ではない理由を知りたい場合は、これをクリックしてください。