[Android学习之旅]Dalvik可执行格式与字节码规范(1)

学习时间:6天
笔记次数:1次
学习课本:Android软件安全权威指南

什么是Dalvik?

按照书中所描述,Dalvik是Google专门为运行Android程序所设计的虚拟机,全称名为Dalvik Virtual Machine,不过在Android4.4以后,由于该虚拟机对于UI显示延迟问题,又对Android底层做了很大的修改,引入了全新的ART(Android RunTime)虚拟机;由原本的JIT负责执行Dalvik字节码切换为AOT编译的ART,但为了继续兼容Dalvik,ART完整的提供了Dalvik的字节码规范。

加深理解Dalvik

Dalvik的后缀名文件是dex文件,是一个可执行文件格式,文件体积小,占用内存空间少。常量池采用32位索引值,这样使得它对方法名和常量寻址的速度快。 每一个进程都与一个Dalvik虚拟机对应;正常的java编译出来的文件是class,是由java虚拟机所运行。而Dalvik虚拟机则运行的是dex字节码。

Dalvik的传参方式

以往java的虚拟机是基于栈架构,就类似WINDOWS应用一样,参数都是通过堆栈进行传递,我们知道堆栈也是内存的一部分,这样导致CPU消耗大量时间给内存进行分配,读写等操作,就会降低性能。所以Dalvik采用的是寄存器架构的方式,数据的访问直接通过寄存器来传递,这样访问方式和 速度都快很多。 这里可以通过手动使用java命令行和dx命令行分别编译2种字节码进行对比。

深入理解Dalvik的运行机制

Android源码根目录下的Dalvik目录存放了所有与Dalvik相关的代码实现和文档,可以通过阅读这些内容来深入了解它的运行机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值