web-dev-qa-db-ja.com

Dalvik仮想マシンインスタンスはアプリケーションごとに作成されますか?

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

53
Rockystech

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

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

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

DVMの詳細な説明については、 What is ... The Dalvik Virtual Machine もご覧ください。

57
  1. Dalvik仮想マシンは、Android専用に構築されています。 バッテリー寿命および処理能力の問題に対処するために構築されたもので、無料です。

  2. VM Virtual Machine(JVM)の代わりにDalvik Javaを使用しています。なぜなら、Javaコンパイラ、Javaツールは無料ですが、JVMは無料ではないため、Android開発者は独自の仮想マシンを作成し、無料で作成しました。

  3. 仮想マシンは、アプリケーションが同じように異なるデバイスを実行できるように仮想コンピューターとしてデバッグに役立つため、仮想マシンが必要です。

絵画表現

IMG

34
Devrath

.Javaファイルは、Javaコンパイラ(javac)に渡され、.classファイル。

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

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

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

30
Tapsee Panu

すべての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

13
Imposter

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つのアプリケーションが異なるデバイスで同じ方法で実行されます

1
Akash Raj