漳州市建设局网站6,wordpress连接mysql8,5050众筹网站开发,深圳宝安区电子厂注意点 首先#xff0c;让我们来思考下面几个问题#xff1a; 什么是Dalvik虚拟机? Dalvik VM与JVM有什么区别#xff1f; Dalvik VM有什么新的特点#xff1f; Dalvik VM的架构是怎么样的#xff1f; 首先#xff0c;我得承认第一个问题问得很傻#xff1a;什么是Dalv… 注意点 首先让我们来思考下面几个问题 什么是Dalvik虚拟机? Dalvik VM与JVM有什么区别 Dalvik VM有什么新的特点 Dalvik VM的架构是怎么样的 首先我得承认第一个问题问得很傻什么是Dalvik虚拟机没有人给出过一个明确的定义但是我们似乎可以从人们对Java虚拟机的描述中得到些信息。 Java虚拟机JVM是一个虚构出来的计算机是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它有自己完善的硬件架构如处理器、堆栈、寄存器等还具有相应的指令系统。使用“Java虚拟机”程序就是为了支持与操作系统无关、在任何系统中都可以运行的程序。 因此我们不妨对Dalvik虚拟机作出这样的描述 Dalvik虚拟机是Android程序的虚拟机是Android中Java程序的运行基础。其指令集基于寄存器架构执行其特有的文件格式——dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。它的核心内容是实现库libdvm.so大体由C语言实现。依赖于Linux内核的一部分功能——线程机制、内存管理机制能高效使用内存并在低速CPU上表现出的高性能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例其代码在虚拟机的解释下得以执行。 与Dalvik虚拟机关系最密切的非JVM莫属在Android源码readme文档中有这样一段话Much of the code under this directory originally came from the Apache Harmony project, and as such contains the standard Apache header comment. Some of the code was written originally for the Android project… Dalvik VM与Apache Harmony 项目关系源远流长因此与JVM关系自然就密切了。 然而Dalvik VM ≠Java VM dalvik基于寄存器而JVM基于stack Dalvik执行的是特有的DEX文件格式而JVM运行的是*.class文件格式。 优势1、在编译时提前优化代码而不是等到运行时 2、 虚拟机很小使用的空间也小被设计来满足可高效运行多种虚拟机实例。3、常量池已被修改为只使用32位的索引以 简化解释器 JVM的字节码主要是零地址形式的概念上说JVM是基于栈的架构。Google Android平台上的应用程序的主要开发语言是Java通过其中的Dalvik VM来运行Java程序。为了能正确实现语义Dalvik VM的许多设计都考虑到与JVM的兼容性但它却采用了基于寄存器的架构其字节码主要是二地址/三地址的混合形式。 基于栈与基于寄存器的架构谁更快现在实际的处理器大多都是基于寄存器的架构从侧面反映出基于寄存器比基于栈的架构更与实际的处理器接近。但对于VM来说源架构的求值栈或者寄存器都可能是用实际机器的内存来模拟的所以性能特性与实际硬件又有不同。一般认为基于寄存器架构的Dalvik VM比基于栈架构JVM执行效率更高原因是虽然零地址指令更紧凑但完成操作需要更多的load/store指令也意味着更多的指令分派instruction dispatch次数与内存访问次数访问内存是执行速度的一个重要瓶颈二地址或三地址指令虽然每条指令占的空间较多但总体来说可以用更少的指令完成操作指令分派与内存访问次数都较少。 转载于:https://www.cnblogs.com/Tesi1a/p/7624131.html