Java虚拟机和Dalvik虚拟机有哪些区别和不同?

Java虚拟机和Dalvik虚拟机有哪些区别和不同?Dalvik 是 Google 公司自己设计的用于 Android 平的虚拟机 它可以简单地完成进程隔离和线程管理 并且可以提高内存的使用效率 每一个 Android 应用程序在底层都会对应一个独立的 Dalvik 虚拟机实例 其代码在虚拟机的解析下得以执行

大家好,欢迎来到IT知识分享网。

Dalvik是Google公司自己设计的用于Android平的虚拟机,它可以简单地完成进程隔离和线程管理,并且可以提高内存的使用效率。每一个Android应用程序在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解析下得以执行。

很多人都认为Dalvik虚拟机是一个Java虚拟机,因为Android开发的编程语言恰恰是Java语言,但是这种说法并不准确。Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者不兼容,而且也有很多不同之处。下面通过一个图进行对比说明,如下所示。

Java虚拟机和Dalvik虚拟机有哪些区别和不同?

Java 虚拟机和Dalvik虚拟机

从图中可以看出,Java虚拟机和Dalvik虚拟机主要有两大区别:一是它们编译后的文件不同;二是它们基于的架构不同。具体如下:

1.编译后的文件不同

Java 虚拟机运行的是.class字节码文件,而 Dalvik 虚拟机运行的则是其专有的.dex文件。在Java程序中Java类会被翻译成一个或者多个字节码文件(.class)然后打包到.jar文件,之后Java虚拟机会从相应的.class文件和.jar文件中获取相应的字节码。Android程序虽然也是使用Java语言进行编程,但是在翻译成.class文件后,还会通过工具将所有的.class文件转换成一个.dex文件,然后Dalvik虚拟机从其中读取指令和数据,最后的.odex是为了在运行过程中进一步提高性能而对.dex文件进行的进一步优化,能加快软件的加载速度和开启速度。

2.基于的架构不同

Java虚拟机是基于栈的架构,大家知道,栈是一个连续的内存空间,取出和存入的速度比较慢;而Dalvik是基于寄存器的架构,寄存器是CPU上的一块缓存,寄存器的存取速度要比从内存中存取的速度快很多,这样就可以根据硬件最大限度地优化设备,更适合移动设备的使用。

需要说明的是,Android系统下的Dalvik虚拟机默认给每一个应用程序最多分配16 MB内存,如果Android加载的资源超过这个值,就会报出OutOfMemoryError异常,因此一定要注意这个问题。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/185828.html

(0)
上一篇 2025-08-13 09:10
下一篇 2025-08-13 09:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信