学习时间: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相关的代码实现和文档,可以通过阅读这些内容来深入了解它的运行机制。