《JVM系列,视频百度云

那么,如果想要让一个Java程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。 简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的译者。

执行引擎的工作流程:

  • 执行引擎在执行的过程中究竟需要执行什么样的字节码指令完全依赖于程序计数器。

  • 每当执行完一项指令操作后,程序计数器就会更新下一条需要被执行的指令地址。

  • 当然方法在执行的过程中,执行引擎有可能会通过存储在局部变量表中的对象引用准确定位到存储在Java堆区中的对象实例信息,以及通过对象头中的元数据指针定位到目标对象的类型信息

在这里插入图片描述

在这里插入图片描述

从外观上来看,所有的Java虚拟机的执行引擎输入,输出都是一致的:输入的是字节码二进制流,处理过程是字节码解析执行的等效过程,输出的是执行过程。

Java代码编译和执行过程


大部分的程序代码转换成物理机的目标代码或虚拟机能执行的指令集之前,都需要经过图中的各个步骤:

在这里插入图片描述

Java代码编译是由Java源码编译器来完成,流程图如下所示:

在这里插入图片描述

Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

  • 在编译方式下,机器上运行的是与源程序等价的目标程序,源程序与编译程序都不参加目标程序的执行过程;而是将程序翻译成目标代码。

  • 在解释方式下,解释程序与源程序要参加程序的运行过程中,运行程序的控制权在解释程序。在这个过程中不产生独立的目标代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值