一、了解JVM
JVM: java virtual machine,缩写JVM,一种能够执行java bytecode的虚拟机器,本质上是一种软件实现,也可以理解成以一条运行java bytecode的底层程序。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
实际上,并不是仅有java源代码,能编译生成.class文件,也就是我们所说的字节码文件,下面是引用一张维基百科的图:
同样,python源码程序,也能最终编译成.class/.jar文件。
二、Jvm、dalvik虚拟机
先看一下JVM和Android虚拟机的区别:
- JVM执行的是.class文件、Dalvik和ART执行的.dex文件。
- class文件有很多冗余信息,dex文件会做去冗余信息的优化。
- JVM是基于堆栈,Dalvik虚拟机是基于寄存器。
JVM是基于堆栈,Dalvik虚拟机是基于寄存器:
JVM是基于栈的指令会很紧凑,比如一个方法体的执行,需要经过一连串的指令来完成,JVM指令集是没有任何变量的,执行过程中,结合局部变量表,完成方法体指