📜  JVM 和 DVM 的区别(1)

📅  最后修改于: 2023-12-03 15:32:27.070000             🧑  作者: Mango

JVM 和 DVM 的区别

在移动应用开发中,我们常常听到 JVM 和 DVM 两个概念,它们都是 Java 虚拟机(JVM)的变种。下面来介绍一下 JVM 和 DVM 的区别。

JVM

Java 虚拟机(JVM)是一种可以在各种平台上运行 Java 字节码的虚拟机。在使用 JVM 时,开发者只需要编写一次 Java 代码,然后使用 Java 编译器将其编译成字节码,就可以在任何安装了 JVM 的平台上运行。

JVM 是使用栈来管理内存的,每个线程都有一个自己的栈。JVM 运行时还支持方法的动态绑定和垃圾回收。

DVM

Dalvik 虚拟机(DVM)是一种专为 Android 平台设计的 Java 虚拟机。与 JVM 不同,DVM 是基于寄存器的而不是基于栈的。DVM 专门设计用来在资源受限的移动设备上运行。

DVM 架构的一个显著特性是它使用了 Just-In-Time(JIT)编译器技术来优化 Android 应用的运行效率。JIT 可以在运行时编译字节码,从而减少在运行时的解释器和优化器所需要的资源。这也使得 Android 应用的启动速度更加快速,响应更加迅速。

区别比较
  • JVM 是基于栈的,而 DVM 是基于寄存器的。
  • JVM 运行跨平台 Java 应用,而 DVM 运行 Android 应用,因为 DVM 会针对 Android 平台的底层硬件资源进行优化。
  • DVM 使用 Just-In-Time(JIT)技术来实现优化,而 JVM 没有这个特性。
  • DVM 可以在较小的内存和处理器能力的设备上运行,而 JVM 不同,需要更多的系统资源。

在移动开发中,我们要使用 DVM 来编译和运行 Android 应用程序。如果要使用 Java 虚拟机并且想要跨多个操作系统和平台,那么我们需要使用 JVM。

参考资料
  1. Difference Between JVM and DVM