首页 > 其他 > 详细

第十二章:执行引擎

时间:2021-04-19 01:53:23      阅读:28      评论:0      收藏:0      [点我收藏+]

一、执行引擎概述

  技术分享图片

 

   

  执行引擎是Java虚拟机核心的组成部分之一。
  “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式

 

  

JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字节码指令、符号表,以及其他辅助信息。


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

 

执行引擎工作过程

技术分享图片

 

 

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

 

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

 

二、Java 代码编译和执行过程

Java 代码编译和执行的过程

技术分享图片

 

   橙色:javac 前端编译器

  绿色:解释执行

  蓝色:编译

 

技术分享图片

 

 

技术分享图片

 

 

问题:什么是解释器(Interpreter),什么是JIT编译器?
解释器:当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。
JIT (Just In Time compiler)编译器:就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言。

问题:为什么说Java是半编译半解释型语言?
JDK1.0时代,将Java语言定位为“解释执行”还是比较准确的。再后来,Java也发展出可以直接生成本地代码的编译器。

现在JVM在执行Java代码的时候,通常都会将解释执行与编译执行二者结合起来进行。

 

 

三、机器码、指令、汇编语言

四、解释器

五、JIT编译器

第十二章:执行引擎

原文:https://www.cnblogs.com/niujifei/p/14674961.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!