Dalvik与HotSpot这类标准JVM有哪些不同呢?
首先,将书中的代码编译为java字节码和dalvik字节码
书中所说的dexdump程序在build-tools目录下(依据API还有子目录)。
在老罗的安卓之旅中有关于Dalvik虚拟机的介绍:
不过这里主要是一些关于这个VM的性能有关的研究,例如内存管理,进程管理之类的。可以日后在看。他的文章中还提到了一篇发表在VEE上的论文:
Virtual Machine Showdown: Stack Versus Registers
我们通常认为寄存器架构比堆栈架构更快,虽然堆栈架构可以做到零地址,但是寄存器架构用了更少的指令数摊派。
另外一点就是dalvik虚拟机对于常量池的压缩
缺少JVM的知识让我这里很难受——我并不觉得这是一种更快的寻址方式,但是它确实节省了空间。
有关Zygote的分析可见老罗的另一篇文章:
Android系统进程Zygote启动过程的源代码分析
不过以我目前的水平好像还不用那么深入……
Dalvik 分析 - Class加载篇
不过,要想深入的理解dalvik虚拟机还是跟随动态调试,甚至是源代码来看具体dex文件是如何被加载的。