《精通Android3》之Dalvik VM剖析

来源:互联网 发布:win10获取权限软件 编辑:程序博客网 时间:2024/05/16 23:52

本文的主要内容摘自《精通Android3》 

1.3Dalvil VM剖析 

“作为Android平台的一部分,Google公司花了大量时间思考针对低功耗手持设备的优化设计。与桌面设备相比,手持设备在内存和速度方面落后8-10年。它们的计算能力也有限。结果,手机的性能需求变得很严格,要求手机设计人员优化所有因素。如果查看Android中的包列表,你将会看到他们的功能全面而丰富。

这些问题使Google公司在许多方面重新审视标准JVM实现。(Dan Bornstein对Google公司的这个JVM实现作出了重要贡献,他编写了Dalvik VM,Dalvik是冰岛一个小镇的名称。)首先,Dalvik VM获取生成的Java类文件,将它们组合为一个或多个Dalvik可执行文件(.dex)。它重用多个类文件中的重复信息,与未压缩的传统.jar文件相比,有效地将空间需求减少了一半。

其次,Google公司在Dalvik VM中对垃圾收集进行了调优,但它在早期版本中选择了删除JIT(Just-In-Time,即时)编译器。Android2.3添加了JIT。报告称这可在各种场所提供快2到5倍的原始性能,将通过应用程序的性能提升10%-20%。

最后,Dalvik VM使用了一种不同的汇编代码生成方法,它使用寄存器而不是栈作为主要的数据存储单元。Google公司希望这样能将指令减少到30%。应当指出,采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是基于Java字节码,而是基于.dex文件。这意味着无法直接执行Java字节码,必须首先得到Java类文件,然后将它们转换成可连接的.dex文件。

这种对性能的狂热追求还拓展到了Android SDK其他部分。例如,Android SDK大量使用XML来定义UI布局。然而,所有XML数据必须编译成二进制文件,然后才能将这些文件储存在设备上。Android提供了一些专门的机制来使用XML数据。”



0 0
原创粉丝点击