我对android davilk 虚拟机的理解
Davilk虚拟机作为Android平台的一部分.Google公司花了大量时间思考针对低功耗手持设备的优化设计。在智能手机出现之前,与桌面设备相比,手持设备在内存和速度方面落后8-10年。它们的计算能力也有限。结果,手机的性能需求变得很严格,要求手机设计人员优化所有因素。如果查看Android中的包列表,你将会看到它们的功能全面而丰富。
这些问题使Google公司在许多方面重新审视标准JVM实现。(Dan Bomstein(一位Stanford university 的教授)对Google公司的这个JVM实现作出了重要贡献,他编写了Dalvik VM,Dalvik是冰岛一个小镇的名称。)首先.Dalvik VM获取生成的Java类文件,将它们组合为一个或多个Dalvik可执行文件(.dex)。它重用多个类文件中的重复信息,与未压缩的传统.jar文件相比,有效地将空间需求减少了一半。如图所示:
其次,Google公司在Dalvik VM中对垃圾收集进行了调优,但它在早期版本中选择了删除java经典的JIT(Just-In-Time,即时)编译器。后来,Android 2.3添加了JIT.报告称这可在各种场所提供快2到5倍的原始性能,将通用应用程序的性能提升l0%-20%.android 4.4以后引入的art虚拟机,这是一种新的机制,以后有时间在说。
最后,Dalvik VM使用了一种不同的汇编代码生成方法,它使用寄存器而不是栈作为主要的数据存储单元。GOogle公司希望这样能将指令减少到30%。应当指出,采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是基于Java字节码,而是基于.dex文件。这意味着无法直接执行Java字节码,必须首先得到Java类文件,然后将它们转换为可链接的.dex文件。如图所示:
这种对性能的狂热追求还扩展到了Android SDK的其他部分。例如:
Android SDK大量使用XML来定义相应布局。然而,所有XML数据必须编译为二进制文件,然后才能将这些文件存储在设备上。Android提供了一些专门的机制来处理XML数据。
当然,android由于虚拟机的限制,有了相应的性能瓶颈,因此在android 4.4时候引入art虚拟机。下节,我们聊一聊art虚拟机。
最新文章
- 进击的Python【第二十一章】
- 关于一个通俗易懂的FFT的C语言实现教程
- java中的动态代理
- CodeForces 688D-Remainders Game
- WPF实现渐变淡入淡出的动画效果
- Android ListView实现仿iPhone实现左滑删除按钮
- 2015 UESTC Winter Training #10【Northeastern Europe 2009】
- Oracle SQL Lesson (1) - 使用SQL Select语句获取数据
- android listview 使用
- SSH深度历险(九) Struts2+DWZ+Uploadify实现多文件(文件和图片等等)上传
- 初识Java NIO
- 增长中的时间序列存储(Scaling Time Series Data Storage) - Part I
- 学习Axure RP原型设计
- Fiddler 你需要了解的
- JS之鼠标改变img
- 【多线程】死锁与Java栈跟踪工具
- 解决最新版 mac os sierra usb网卡不能使用的问题
- android手机常用分辨率
- GitFlow在命令行的使用
- 算法训练 Cowboys(DP)
热门文章
- NOI.AC NOIP模拟赛 第五场 游记
- KVM基于X86硬件辅助的虚拟化技术实现机制【转】
- 【转载】CMenu自绘---钩子---去除边框
- @Transactional导致AbstractRoutingDataSource动态数据源无法切换的解决办法
- [原创]浅谈移动App安全测试
- code.google.com/p/log4go 下载失败
- 利用Android Lost通过互联网或短信远程控制安卓设备
- [Winform]缓存处理
- iOS7中的多任务 - Background Fetch,Silent Remote Notifications,Background Transfer Service
- PPT幻灯片放映不显示备注,只让备注显示在自己屏幕上-投影机 设置