Dalvik仮想マシンインスタンスはアプリケーションごとに作成されますか、それともすべてのAndroidアプリケーションは同じDalvik仮想マシンインスタンスを共有しますか?
すべてのAndroidアプリケーションは、Dalvik仮想マシンの独自のインスタンスを使用して、独自のプロセスで実行されます。 Dalvikは、デバイスが複数のVMを効率的に実行できるように作成されています。
Dalvik VMは、最小限のメモリフットプリントに最適化されたDalvik実行可能(_.dex
_)形式のファイルを実行します。
VMはレジスタベースであり、Java言語コンパイラーによってコンパイルされたクラスを実行します。これは、付属のdx
ツールによって_.dex
_形式に変換されています。
DVMの詳細な説明については、 What is ... The Dalvik Virtual Machine もご覧ください。
Dalvik仮想マシンは、Android専用に構築されています。 バッテリー寿命および処理能力の問題に対処するために構築されたもので、無料です。
VM Virtual Machine(JVM)の代わりにDalvik Javaを使用しています。なぜなら、Javaコンパイラ、Javaツールは無料ですが、JVMは無料ではないため、Android開発者は独自の仮想マシンを作成し、無料で作成しました。
仮想マシンは、アプリケーションが同じように異なるデバイスを実行できるように仮想コンピューターとしてデバッグに役立つため、仮想マシンが必要です。
.Java
ファイルは、Javaコンパイラ(javac
)に渡され、.class
ファイル。
すべて .class
ファイルがdx
ツールに渡され、単一のdex
ファイルが生成されます。
dex
ファイルがDalvik VMに渡され、最終的なマシンコードが生成されます。
最終的なマシンコードがCPUに渡されて実行されます。
すべてのapkの基本ソースコードはJava languageです。このプロジェクトをビルドすると、すべての.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の詳細を知るには クリック 。
DVM for Android Why not not JVM click this
Dalvikは、すべてのAndroidアプリケーションが実行される仮想マシンです。 Dalvikを使用すると、Dalvik VMはレジスタベースであり、したがってメモリ効率が高いため、デバイスはメモリ管理を改善して複数の仮想マシンを実行できます。
すべてのAndroidアプリは、独自のプロセスで実行され、独自のDalvik VMのインスタンスを使用します。まず、Javaファイルは、Javaコンパイラによって.classファイルに変換されます。classファイルは、.dex形式に変換する「dx」ツールに渡されます。マシンコードを生成するマシンコードはCPUによって実行されます
.apkファイルには、Dalvik VMで実行できるZip形式の.dexファイルが含まれています
なぜDalvikなのか? 1. DVMはバッテリー寿命、処理能力、および無料で構築されています2. JVMは無料ではないため、JVMの代わりにDVMを使用していますDalvik VMはすべてのモバイルデバイスで一貫性を提供します。つまり、1つのアプリケーションが異なるデバイスで同じ方法で実行されます