Wird für jede Anwendung eine Dalvik-VM-Instanz erstellt?

Lesezeit: 3 Minuten

Benutzer-Avatar
Rockystech

Wird für jede Anwendung eine Dalvik-Virtual-Machine-Instanz erstellt oder verwenden alle Android-Anwendungen dieselbe Dalvik-Virtual-Machine-Instanz?

Benutzer-Avatar
Sahil Mahajan Mj

Aus der Entwicklerdokumentation:

Jede Android-Anwendung läuft in einem eigenen Prozess mit einer eigenen Instanz der virtuellen Dalvik-Maschine. Dalvik wurde so geschrieben, dass ein Gerät mehrere VMs effizient ausführen kann.

Die Dalvik-VM führt Dateien in der ausführbaren Dalvik-Datei (.dex)-Format, das für minimalen Speicherbedarf optimiert ist.

Die VM ist registerbasiert und führt Klassen aus, die von einem Java-Compiler kompiliert wurden, der in die umgewandelt wurde .dex Format durch die enthaltenen dx Werkzeug.

Schau auch mal rein Was ist… Die Dalvik Virtual Machine für eine detaillierte Beschreibung über DVM.

  • Ja, im allgemeinen Fall, obwohl eine App so konfiguriert werden kann, dass sie mehrere Prozesse verwendet, und mehrere Apps desselben Herausgebers, die so konfiguriert sind, dass sie unter derselben Benutzer-ID ausgeführt werden, einen Prozess gemeinsam nutzen können.

    – Chris Stratton

    17. September 2013 um 17:20 Uhr

Benutzer-Avatar
Devrath

  1. Die virtuelle Dalvik-Maschine wurde speziell für Android entwickelt. Es wurde gebaut, um die Lebensdauer der Batterie und Rechenleistung Probleme, und das ist es frei.

  2. Wir verwenden Dalvik VM anstelle von Java Virtual Machine (JVM), weil der Java-Compiler und die Java-Tools kostenlos sind, aber die JVM nicht kostenlos ist, also haben die Android-Entwickler von Google ihre eigene virtuelle Maschine erstellt und sie kostenlos gemacht.

  3. Eine virtuelle Maschine ist notwendig, da die virtuelle Maschine beim Debuggen als virtueller Computer hilft, damit meine Anwendungen auf verschiedenen Geräten auf die gleiche Weise ausgeführt werden können

Bildliche Darstellung

IMG

Benutzer-Avatar
Tapsee Panu

EIN .java Datei wird an den Java-Compiler übergeben (javac) um die zu erzeugen .class Datei.

Alle .class Dateien werden übergeben dx Werkzeug zum Generieren einer Single dex Datei.

Das dex Datei wird an die Dalvik-VM übergeben, um den endgültigen Maschinencode zu generieren.

Der endgültige Maschinencode wird der CPU zur Ausführung übergeben.

  • Wie beantwortet dies die ursprüngliche Frage?

    – nbro

    11. Januar 2019 um 21:56 Uhr

Benutzer-Avatar
Hochstapler

Der grundlegende Quellcode von apk ist in Java-Sprache. Wenn Sie dieses Projekt erstellen, werden alle .java-Dateien in .class konvertiert. Jetzt konvertiert das dx-Tool von adk alle .class-Dateien in die Datei “classes.dex”. Und diese Datei “classes.dex” wird auf der virtuellen Dalvik-Maschine ausgeführt.

Weitere Informationen zur virtuellen Dalvik-Maschine: http://www.slideshare.net/jserv/understanding-the-dalvik-virtual-machine

Die virtuelle Dalvik-Maschine soll mehrere VMs gleichzeitig ausführen. Jede App läuft also in einem eigenen Prozess mit einer eigenen Instanz der virtuellen Dalvik-Maschine, wie von @sahilMahajanMj gesagt.

Und diese Klassen.dex-Datei wird weiter zur Odex-Datei optimiert und in /dalvik/dalvik-cache gespeichert
Um mehr über odex zu erfahren, klicken Sie hier.

Wenn Sie wissen möchten, warum DVM für Android warum nicht JVM klicke hier

Dalvik ist eine virtuelle Maschine, auf der jede Android-Anwendung läuft. Durch Dalvik ist das Gerät in der Lage, mehrere virtuelle Maschinen durch eine bessere Speicherverwaltung auszuführen, da Dalvik-VMs registerbasiert und daher speichereffizient sind

Jede Android-App läuft in einem eigenen Prozess mit einer eigenen Instanz von Dalvik VM. Zuerst werden Java-Dateien vom Java-Compiler in eine .class-Datei konvertiert. .class-Dateien werden an das “dx”-Tool übergeben, das sie in das .dex-Format konvertiert. .dex-Dateien werden an DVM übergeben, um Maschinencode zu erzeugen Maschinencode wird von der CPU ausgeführt

Die .apk-Datei enthält eine .dex-Datei im ZIP-Format, die auf Dalvik-VMs ausgeführt werden kann

Warum Dalvik? 1. DVM sind für Batterielebensdauer, Rechenleistung und kostenlos ausgelegt. 2. Wir verwenden DVM anstelle von JVM, da JVM nicht kostenlos ist. Dalvik VMs sorgen für Konsistenz auf allen Mobilgeräten, dh eine Anwendung wird auf verschiedenen Geräten auf die gleiche Weise ausgeführt

1157840cookie-checkWird für jede Anwendung eine Dalvik-VM-Instanz erstellt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy