首页 > 编程知识 正文

深入理解jvm虚拟机第3版,java虚拟机和vmware虚拟机

时间:2023-05-05 19:34:08 阅读:170325 作者:3423

虚拟机: JVM的作用是将平台无关的. class中的字节码翻译成平台相关的机器码,实现跨平台。 Dalvik和Art(Android5.0或更高版本使用的虚拟机)是Android使用的虚拟机。

虚拟机是什么,Jvm,Dalvik(DVM)与Art三者之间的区别

JVM和Android虚拟机的区别

差异1 :

dvm运行. dex格式文件jvm,编译. class文件和android程序,然后创建. class文件。 然后,dex工具将. class文件处理为. dex文件,并将资源和. dex文件等打包为. apk文件。 apk是安卓包的意思。 jvm将运行. class文件。

区分二:

dvm是基于寄存器的虚拟机,而jvm运行是基于虚拟堆栈的虚拟机。 寄存器访问速度比堆栈快得多,dvm可以根据硬件实现最大的优化,适用于移动设备

差异3 :

. class文件中存在大量冗馀信息,dex工具将消除冗馀信息并将所有. class文件合并为. dex文件。 I/O操作减少,类搜索速度提高

摘要: JVM以Class为执行单元,安卓虚拟机以Dex为执行单元,编译过程JVM可直接用Javac加载。 安卓虚拟机必须先编译成dex,然后再编译成apk。 最后一次运行Android Art虚拟机时,安装时会说出dex缓存的本地机器代码,安装速度慢、占用存储空间的Android Dalvik虚拟机将在程序运行时被翻译。 节约空间,消耗cpu时间。 在空间中改变时间的典型

dex和class究竟在结构上有什么区别呢? 由于dex将文件划分为三个区域,这三个区域包含整个项目中所有java文件的信息,因此随着类的增加,dex将具有优势。 他在一个dex文件中,可以复用很多区域,减少了dex文件的大小。

本质上他们是一样的,dex是从class文件进化而来的,但calss中存在很多沉淀信息,dex去除了沉淀信息并进行了综合

堆栈和寄存器的概念,之前有深入理解过吗? 总结: Java虚拟机均为基于堆栈的结构,Dalvik虚拟机基于寄存器。 基于堆栈的指令很紧凑,Java虚拟机使用的指令只占一个字节,因此称为字节码。 基于寄存器的指令需要指定源地址和目标地址,因此需要占用更多的指令空间。 Dalvik虚拟机的某些指令需要占用2个字节。 基于堆栈的指令集和基于寄存器的指令集各有优劣,一般来说,为了执行相同的功能,基于堆栈的指令集需要更多的指令(主要是load和store指令),而基于寄存器的指令集需要更多的指令区域。 栈要求更多的指令消耗更多的CPU时间,而寄存器要求更多的指令空间则意味着数据缓冲器(d-cache )更容易失效

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。