深入了解JVM05.执行引擎

5 篇文章 0 订阅

执行引擎

1.执行引擎是 Java 虚拟机核心的组成部分之一。

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

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

前端编译与后端编译

前端编译:从 Java 程序-字节码文件的这个过程叫前端编译.

执行引擎这里有两种行为:一种是解释执行,一种是编译执行(这里的是后端
编译)。

解释器

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

JIT(Just In Time Compiler)编译器:就是虚拟机将源代码一次性直接编译
成和本地机器平台相关的机器语言,但并不是马上执行。

半编译半解释

JVM 设计者们的初衷仅仅只是单纯地为了满足 Java 程序实现跨平台特性,因此
避免采用静态编译的方式由高级语言直接生成本地机器指令,从而诞生了实现解
释器在运行时采用逐行解释字节码执行程序的想法。

解释器真正意义上所承担的角色就是一个运行时“翻译者”,将字节码文件中的
内容“翻译”为对应平台的本地机器指令执行,执行效率低。

JIT 编译器将字节码翻译成本地代码后,就可以做一个缓存操作,存储在方法区
的 JIT 代码缓存中(执行效率更高了)。

是否需要启动 JIT 编译器将字节码直接编译为对应平台的本地机器指令,则需要
根据代码被调用执行的频率而定。

JIT 编译器在运行时会针对那些频繁被调用的“热点代码”做出深度优化,将其
直接编译为对应平台的本地机器指令,以此提升 Java 程序的执行性能。

一个被多次调用的方法,或者是一个方法体内部循环次数较多的循环体都可以
被称之为“热点代码”。

目前 HotSpot VM 所采用的热点探测方式是基于计数器的热点探测。

解释器的作用

1.当程序启动后,解释器可以马上发挥作用,响应速度快,省去编译的时间,立
即执行。

2.编译器要想发挥作用,把代码编译成本地代码,需要一定的执行时间,但编译
为本地代码后,执行效率高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值