web-dev-qa-db-fra.com

Une instance de machine virtuelle Dalvik est-elle créée pour chaque application?

Une instance de machine virtuelle Dalvik est-elle créée pour chaque application, ou toutes les applications Android partagent la même instance de machine virtuelle Dalvik?

53
Rockystech

Chaque Android application s'exécute dans son propre processus, avec sa propre instance de la machine virtuelle Dalvik. Dalvik a été écrit pour qu'un appareil puisse exécuter plusieurs VM efficacement.

Le Dalvik VM exécute les fichiers dans le Dalvik Executable (.dex) format optimisé pour un encombrement mémoire minimal.

Le VM est basé sur des registres et exécute des classes compilées par un Java qui a été transformé en .dex format par l'outil dx inclus.

Jetez également un œil à Qu'est-ce que ... La machine virtuelle Dalvik pour une description détaillée de DVM.

57
Sahil Mahajan Mj
  1. La machine virtuelle Dalvik est conçue spécifiquement pour Android. Il a été conçu pour résoudre les problèmes de autonomie de la batterie et puissance de traitement, et c'est gratuit.

  2. Nous utilisons Dalvik VM au lieu de Java Virtual Machine (JVM) parce que le Java compilateur, le Java sont gratuits, mais la JVM n'est pas gratuite, donc les développeurs Android de Google ont créé leur propre machine virtuelle et l'ont rendue gratuite).

  3. Une machine virtuelle est nécessaire car la machine virtuelle aide au débogage, en tant qu'ordinateur virtuel afin que mes applications puissent exécuter différents appareils de la même manière

Représentation picturale

IMG

34
Devrath

UNE .Java le fichier est donné au Java (javac) pour générer le .class fichier.

Tout .class les fichiers sont donnés à l'outil dx pour générer un seul fichier dex.

Le fichier dex est donné au Dalvik VM pour générer le code machine final.

Le code machine final est donné à la CPU à exécuter.

30
Tapsee Panu

Tout le code source de base d'apk est en Java. Lorsque vous construisez ce projet, tous les fichiers .Java sont convertis en .class maintenant l'outil dx d'adk convertit tous les fichiers .class en fichier classes.dex. Et ce fichier classes.dex est exécuté sur la machine virtuelle dalvik.

Pour plus d'informations sur la machine virtuelle dalvik: http://www.slideshare.net/jserv/understanding-the-dalvik-virtual-machine

La machine virtuelle Dalvik est conçue pour exécuter plusieurs machines virtuelles à la fois. Ainsi, chaque application s'exécute dans son propre processus, avec sa propre instance de la machine virtuelle Dalvik, comme l'a dit @sahilMahajanMj.

Et ce fichier classes.dex est encore optimisé en fichier odex et enregistré dans/dalvik/dalvik-cache
Pour en savoir plus sur odex cliquez ici .

Si vous voulez savoir pourquoi DVM pour Android pourquoi pas JVM cliquez ici

13
Imposter

Dalvik est une machine virtuelle sur laquelle toutes les applications Android s'exécutent. Grâce à Dalvik, l'appareil est capable d'exécuter plusieurs machines virtuelles grâce à une meilleure gestion de la mémoire car les machines virtuelles Dalvik sont basées sur des registres et donc mémoire efficace

Chaque application Android s'exécute dans son propre processus, avec sa propre instance de Dalvik VM. Tout d'abord, Java sont convertis en fichier .class par Java sont donnés à l'outil "dx" qui le convertit au format .dex. Le fichier .dex est donné à DVM pour produire le code machine Le code machine est exécuté par le CPU

Le fichier .apk contient un fichier .dex au format Zip qui peut être exécuté sur les machines virtuelles Dalvik

Pourquoi Dalvik? 1. Le DVM est conçu pour la durée de vie de la batterie, la puissance de traitement et sa gratuité. 2. Nous utilisons le DVM au lieu de la JVM car la JVM n'est pas gratuite.

1
Akash Raj