解释器(Interpreter): - Java虚拟机启动后,根据预定义的规范,对字节码采用逐行解释的方式执行 - 将每条字节码文件中的内容翻译为对应平台的本地机器指令执行 JIT(Just In Time Compiler)编译器: - 虚拟机将源代码直接编译成和本地机器相关的机器语言2. 机器码
1. 采用二进制编码方式表示的指令,叫做机器指令码。一开始就是直接用这种方式来编程 2. 机器语言被计算机理解接受,但和人类语言差别太大,编程容易出错 3. 编写的程序,cpu直接读取运行,因此执行速度最快 4. 机器指令与cpu密切相关,不同种类的cpu所对应的机器指令不同3. 指令
- 机器指令是由0和1组成的,不方便,因此发明了指令 - 指令就是把机器码中特定的0和1的序列,简化成对应的指令,如mov,inc,可读性提高 - 不同的硬件平台,执行同一个操作,对应的机器码不同,所以不同的硬件的同一个指令mov,对应的机器码不同4. 指令集
1. 不同的硬件平台,各自支持的指令,是有差别的。因此每个平台所支持的指令,成为对应平台的指令集 - x86指令集:对应x86架构的平台 - ARM指令集:对应的是ARM架构的平台5. 高级语言
计算机执行高级语言编写的程序时,仍然需要把程序解释和编译成机器的指令码 - 该过程就叫解释程序或编译程序6. 字节码
- 主要目的是为了跨平台
- 单一指责
- 保护源码
- 提高速度
- 低效
- 将字节码中的文件内容翻译为对应平台的本地机器指令执行 - 当一条字节码指令被解释执行完成后,再根据PC寄存器中记录的下一条需要被执行的字节码指令执行解释操作二、JIT编译器
- 编译执行:直接编译成机器码。现代虚拟机为了提高执行效率,会使用即时编译技术(JIT, Just In Time), 将二进制字节码,直接编译成机器码后再执行
HotSpot VM - 目前市面上高性能虚拟机的代表之一 - 采用解释器和即使编译器并存的架构 - 相互协作,各自取长补短 - 如今,Java的运行程序性能已经可以和C/C++一较高下1. 热点代码怎么发现 2. 两种 JIT编译器



