Android 虚拟机 Davlik
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架构中的位置
最新文章
- 学习了quartz.net2.0的心得
- NSInvocation的使用(转)
- Ubuntu 14.04 64位安装Android Studio 和 genymotion (上)
- 一次对象过大引起的gc性能问题的分析与定位
- 【算法】哈希表的诞生(Java)
- WaitForSingleObject函数
- WebService之CXF注解报错(三)
- python笔记:#011#循环
- DSAPI中TCP、UDP、HTTP的选择
- GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
- 2017-12-15python全栈9期第二天第三节之作业讲解用户三次登陆
- 笔记本centos 取消 关闭盖子自动挂起
- IntelliJ+Maven+Spring+Tomcat项目搭建(MAC)
- c# 得到list符合某条件的索引值,排序
- 关于ThinkPHP的一些编程技巧
- ansible wc -l 对结果值取大小的操作
- HDU-4471 Yet Another Multiple Problem (BFS+路径还原)
- 使用KindEditor完成图片上传(springmvc&;fastdfs/springmvc&;ftp)
- 如何写科技论文How to write a technical paper
- Objective-C-----协议protocol,代码块block,分类category
热门文章
- 【Robot Framework】robot framework 学习以及selenium、appnium、requests实践(四)
- 刻意练习,逃离舒适区——怎么样成为一个高手[罗辑思维]No.183_知识笔记
- opecv轮廓匹配,可以用于去噪
- oracle 大字段clob检索
- python中时间和时区
- mysql中explain看性能
- call函数心得
- 如何解决SWAT模型数据移动目录后出现的“SWAT2005.mdb database specified in your MasterProgress table does not exists. Please correct and try again”的问题
- HTML+css实现图片全屏
- DedeCMS中function='Html2Text(@me)的用法分析