《精通Android3》之Dalvik VM剖析

本文的主要内容摘自《精通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数据。”



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值