Dalvik VM介绍
Dalvik虚拟机是Google的用于移动设备的Android平台的一个主要部分。虚拟机可运行Java平台应用程序,这些应用程序被转换成紧凑的Dalvik可执行格式(.dex),该格式适合内存和处理器速度受限的系统。
Dalvik虚拟机的作者是丹伯恩斯坦(Dan Bornstein)。
与大多数虚拟机和真正的Java虚拟机不同,前者是栈机(stack machine),而Dalvik VM是基于寄存器的架构。就像CISC与RISC的争论,这两种方式的相对优点是一个不断争论的话题,且有时技术界限会变得模糊不清。此外,两种方法的相对优势取决于所选择的解释/编译策略。但是,总的来说,基于stack的机器必须使用指令来载入stack上的数据,或使用指令来操纵数据,因此与基于寄存器的机器相比,需要的指令更多。然而,在寄存器的指令必须编码源和目的地寄存器,因此往往指令更大。
一个名为dx的工具,它用于转换Java的.class文件到.dex格式。多个类文件可包含到单个的.dex文件中。重复的、可用于多个类的字符串和其它常量在转换到.dex格式时输出到保留空间。Java字节码还可转换成可选择的、Delvik VM使用的指令集。一个未压缩的.dex文件在文件大小方面往往比从同样的.class文件压缩成的.jar文件更小。
当Dalvik可执行文件安装到移动设备时,它们是可以被修改的。为了进一步的优化,在某些数据、简单数据结构和内联的函数库中的字节顺序可以互换,例如空类对象被短路。
为满足低内存要求而不断优化, Dalvik虚拟机有一些独特的、有别于其它标准虚拟机的特征:
(1)虚拟机很小,使用的空间也小;
(2)Dalvik没有JIT编译器;
(3)常量池已被修改为只使用32位的索引,以简化解释器;
(4)它使用自己的字节码,而非Java字节码。
此外, Dalvik被设计来满足可高效运行多种虚拟机实例。
Dalvik虚拟机在Android架构中的位置
分享到:
相关推荐
解析DEX文件的指令列表时需要用到。 此文档出处是android2.3.7源码。
Dalvik VM Instruction Formats
NULL 博文链接:https://mysuperbaby.iteye.com/blog/1392516
android虚拟机内部原理剖析。。 深入浅出,值得一看
介紹 Android Dalvik VM 的相關知識. Interpreter Switch dispatch Direct call threading interpreter Direct threading The context problem (HW architecture / branch perdition) Subroutine threading Let's ...
Dalvik VM——Research and Implement on Elastos.ppt
Soruce code for MIPS version implemetation
Android_Dalvik_VM_Internals_Google__
任何程序的运行都有一个运行环境,Windows和Linux桌面系统就是运行环境,Web App有浏览器,那Java的运行环境就是虚拟机。要写好应用,至少要对应用...这里我们就分析一下Android应用开发中核心的核心---Dalvik虚拟机。
一种Java语言API,用于针对Dalvik虚拟机执行编译时或运行时代码生成。不像
Dalvik虚拟机内存管理
Android 系统的深入介绍 PPT中详细介绍了Dalvik VM 的工作原理,Dalvik JIT的工作原理,以及android 一些framework的大致结构。 公司内部做过一次培训,感觉还不错,共享出来,希望有所帮助
Dalvik字节码解析可参考Bytecode for the Dalvik VM和Dalvik VM Instruction Formats,一个是指令的位描述表,一个是指令的语法格式表.
Android Dalvik 虚拟机 分析, 巴基斯坦人写的。
Android平台的Dalvik虚拟机内部机制介绍,googl自己的ppt哟!
Java语言API,用于针对Dalvik VM进行编译时或运行时代码生成。 与或不同,此库创建Dalvik .dex文件而不是Java .class文件。 它具有一个接近金属的小型API。 该API反映了使您可以严格控制所发出的字节码。 代码是...
dali:Dalvik VM .dex和.apk文件的独立汇编程序链接器(正在进行中)
Dalvik 虚拟机( Dalvik VM) 是 Google 专门为 Android 平台设计的一套虚拟机。 区别于标准 Java 虚拟机 JVM 的 class 文件格式, Dalvik VM 拥有专属的 DEX 可执行文件格式和指令集代码。 smali 和 baksmali 则是...
Dalvik 虚拟机( Dalvik VM) 是 Google 专门为 Android 平台设计的一套虚拟机。 区别于标准 Java 虚拟机 JVM 的 class 文件格式, Dalvik VM 拥有专属的 DEX 可执行文件格式和指令集代码。 smali 和 baksmali 则是...