Dalvik VM学习
1.1 Dalvik架构
- Dalvik VM第一次加载生成Cache文件,速度较慢
- Dalvik解释器采用预先算好的Goto地址,基于每个指令OpCode,都固定以64bytes为相对地址,可节省指令执行后查表的时间
- dx将java的.class文件转换成.dex格式,优化时会使文件增加1~4倍,格式为ODEX
1.2 和java虚拟机的差异
- 虚拟机很小,使用的空间也很小
- 没有JIT编译器
- 常量池使用32位索引,以简化解释器
- 使用自己的字节码
- 基于register
- 通过Zygote进行class Preloading,完成虚拟机初始化
1.3 Dalvik VM的主要特征
- .dex文件会把所有.class文件整合到一个文件中,减小了文件尺寸,i/o操作,提高类查找速度
- 每一个android应用运行在一个Dalvik VM实例里,每一个VM实例都是一个独立的进程空间,不同来源的应用使用不同的linux用户来运行
- Zygote是一个虚拟机进程,每当系统需要执行一个android应用程序,Zygote就会孵化出一个子进程来执行该应用程序
1.4 Dalvik VM代码结构
代码保存在dalvik/目录下
- dalvikvm :命令行调用入口文件目录,用于解释命令行参数,调用库函数接口等。
- dexdump :用于查看看编译出来的文件是否正确
- dexlist :生成查看dex文件里所有类方法的工具
- dexopt :生成dex优化工具
- dvz :生成从Zygote请求生成虚拟机实例的工具
- hit :生成显示对象信息/堆栈信息的工具
……
–
学习中…