Was ist der Unterschied zwischen DVM und JVM?

Was ist der Unterschied zwischen Java Virtual Machine und Dalvik Virtual Machine?

  • Wie programmgesteuert die Breite einer Android EditText-Ansicht in DPs (nicht Pixel)
  • Ausgabe mit Databinding mit Kotlin für Android
  • Was ist der Zweck der Android Private Libraries, referenzierte Bibliotheken und Android Dependies in der Android-Projekt-Hierarchie?
  • Höhe auf Android 5.0 (Lollipop) funktioniert nicht
  • Detaillierter Android-Lebenszyklus (onAttachedToWindow ())
  • Erstellen Sie einen Access Point mit dem Nexus 7
  • "Native Schrift kann nicht gemacht werden" nur für einige Leute
  • Android: Veröffentlichen Sie eine App mit verschiedenen Screenshots, die verschiedenen Sprachen entsprechen?
  • Android Parcelable - EinzelhändlerOrderActivity.java return null
  • Bottomsheet mit bewegten Floating Action Buttons
  • Android Gradle bauen und kreisförmige Abhängigkeit
  • Audio mit HTML5 im Android-Browser abspielen
  • 5 Solutions collect form web for “Was ist der Unterschied zwischen DVM und JVM?”

    DVM ist Register basiert, die entworfen ist, um auf niedrigem Gedächtnis zu laufen, benutzt seinen eigenen Bytecode und führt .Dex Akte

    JVM ist Stack basiert, die Java-Byte-Code verwendet und läuft .class-Datei mit JIT.

    Java-Quellcode wird vom Java-Compiler in .class-Dateien kompiliert. Dann verarbeitet das dx (dexer) Tool, Teil des Android SDK die .class Dateien in ein Dateiformat namens DEX, das Dalvik Bytecode enthält. Das dx-Tool beseitigt alle redundanten Informationen, die in den Klassen vorhanden sind. In DEX sind alle Klassen der Applikation in eine Datei gepackt. DVM wurde so konzipiert, dass ein Gerät mehrere Instanzen der VM effizient ausführen kann.

    Stapelbasierte Maschinen müssen Anweisungen verwenden, um Daten auf den Stapel zu laden und diese Daten zu manipulieren und benötigen daher mehr Befehle als Registermaschinen, um denselben Code mit hohem Pegel zu implementieren, aber die Anweisungen in einer Registermaschine müssen die Quell- und Zielregister codieren Und deshalb neigen dazu, größer zu sein.

    Konzeptionell gibt es wenig Unterschied zu einer Anwendungsebene zwischen einem DVM und einem JVM. Architektonisch gibt es einen großen Unterschied zwischen dem registrierten DVM und dem Stack-basierten JVM.

    Beide verwenden ein VM-Code-Modell. Allerdings verwendet der DVM registrierungsbasierte Opcodes, die mit den registerbasierten Bytecode-Befehlen vergleichbar sind, die die meisten Zielplattformen bereits ausführen. Dazu gehören Architekturen wie die von ARM und MIPS und die x86-kompatiblen Architekturen von Intel, AMD und VIA Technologies.

    Google entwickelte Android und wählte DVM aus mehreren Gründen. Zuerst gab es Lizenzprobleme mit den meisten JVMs. Als nächstes sollte das DVM effizienter in Bezug auf Speicherverbrauch und Leistung auf einer Register-basierten Maschine sein. DVM soll auch effizienter sein, wenn mehrere Instanzen des DVM ausgeführt werden. Bewerbungen erhalten ihre eigene Instanz. Daher benötigen mehrere aktive Anwendungen mehrere DVM-Instanzen. Wie die meisten Java-Implementierungen hat der DVM einen automatischen Garbage Collector.

    Mehr darüber

    Die jvm-Architektur ist stapelbasiert, während die dvm-Architektur registerbasiert ist. Stapelbasierte Maschinen erfordern mehr Anweisungen (dh größere Befehlssätze) als registerbasierte Maschinen für dieselbe Aufgabe. Auf der anderen Seite ist jede Anweisung in den registerbasierten Maschinen größer.

    Wenn eine Java-virtuelle Maschine ein Programm startet, braucht es Speicher, um viele Dinge zu speichern, einschließlich Bytecodes und andere Informationen, die es aus geladenen Klassendateien extrahiert, Objekte, die das Programm instanziiert, Parameter auf Methoden, Rückgabewerte, lokale Variablen und Zwischenergebnisse von Berechnungen .

    Die virtuelle Java-Maschine organisiert den Speicher, den es benötigt, um ein Programm in mehrere Laufzeitdatenbereiche auszuführen.

    Im Allgemeinen müssen Stapel-basierte Maschinen Anweisungen verwenden, um Daten auf dem Stapel zu laden und diese Daten zu manipulieren und benötigen daher mehr Befehle als Registermaschinen, um denselben Code mit hohem Pegel zu implementieren, aber die Anweisungen in einer Registermaschine müssen die Quelle und die Codes codieren Zielregister und daher neigen dazu, größer zu sein.

    Dieser Unterschied ist vor allem für VM-Dolmetscher von Bedeutung, für die der Opcode-Versand teuer ist und andere Faktoren für die JIT-Compilation relevant sind.

    Da es für geringe Speicheranforderungen optimiert ist, hat Dalvik einige spezifische Eigenschaften, die es von anderen Standard-VMs unterscheiden >>>>>

    Die VM wurde einfach abgespeichert, um weniger Platz zu nutzen — >> Dalvik hat derzeit keinen Just-in-Time-Compiler (JIT), aber Android 2.0 enthält experimentelle Quelle für einen (standardmäßig deaktiviert). Der konstante Pool wurde geändert, um nur 32-Bit-Indizes zu verwenden, um den Interpreter zu vereinfachen. Es verwendet seinen eigenen Bytecode, nicht Java-Bytecode * * *

    Jvm wird auf der Grundlage von Byte-Code und die dvm funktioniert auf der Grundlage von optimierten Bytecode ist es für mobile Plattformen optimiert, weil mobile Geräte haben wenig Speicher und niedrigen Prozess, weshalb es mit dem Linux-Kernel ist.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.