java虚拟机JVM执行引擎(工作过程、JIT等)

本文介绍了Java虚拟机JVM的执行引擎,包括执行引擎概述、工作过程、JIT编译器的作用。JVM采用解释器与JIT并存的架构,解释器在程序启动时快速响应,而JIT针对热点代码进行深度优化,提升性能。HotSpot VM的C1和C2编译器分别适用于不同的场景,C2虽然启动慢,但执行效率更高。
摘要由CSDN通过智能技术生成

11. 执行引擎

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6DOHEP03-1603946753415)(C:\Users\GO FOR IT\AppData\Roaming\Typora\typora-user-images\1603766974528.png)]

11.1 执行引擎概述

  • 执行引擎是java虚拟机核心的组成部分之一。

  • 虚拟机的执行引擎则是由软件自行实现的。

  • 执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。

11.2 执行引擎的工作过程

  1. 执行引擎在执行的过程中究竟需要执行什么样的字节码指令完全依赖于PC寄存器。
  2. 每当执行完一项指令操作后,PC寄存器就会更新下一条需要被执行的指令地址。
  3. 当然方法在执行的过程中,执行引擎有可能会通过存储在局部变量表中的对象引用准确定位到存储在Java堆区中的对象实例信息,以及通过对象头中的元数据指针定位到目标对象的类型信息。

11.3 java代码编译和执行的过程

  • 解释器:当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。

  • JIT (Just In Time Compiler)编译器:就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言。

为什么说java是半编译半解释?

执行java代码时,通常通常都会将解释执行和编译执行二者结合。

机器码:

  • 各种用二进制编码方式表示的指令,叫做机器指令码。开始,人们就用它采编写程序,这就是机器语言。
  • 机器语言虽然能够被计算机理解和接受,但和人们的语言差别太大,不易被人们理解和记忆,并且用它编程容易出差错。
  • 用它编写的程序一经输入计算机,CPU直接读取运行,因此和其他语言编的程序相比,执行速度最快。
  • 机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同。

指令:

  • 指令就是把机器码中特定的0和1序列,简化成对应的指令。
  • 不同平台的同一种指令对应的机器码可能不一样。

指令集:

  • 不同的硬件平台,各自支持的指令,是有差别的。因此每个平台所支持的指令,称之为对应平台的指令集。
  • 常见的有:x86指令集和ARM指令集。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值