JVM 执行引擎

概念

执行class文件中的指令,由解释器+编译器组成

补充------Java为什么是半编译半解释型语言

因为Java即有编译器也有解释器,可以用其中一种来运行。

程序执行步骤

解释器与编译器区别

编译器

概念

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

问题------为何有编译器还要有解释器

首先明确: 当程序启动后,解释器可以马上发挥作用,省去编译的时间,立即执行。 编译器要想发挥作用,把代码编译成本地代码,需要一定的执行时间。但编译为本地代码后,执行效率高。

所以: 尽管JRockit VM中程序的执行性能会非常高效,但程序在启动时必然需要花费更长的时间来进行编译。对于服务端应用来说,启动时间并非是关注重点,但对于那些看中启动时间的应用场景而言,或许就需要采用解释器与即时编译器并存的架构来换取一个平衡点。在此模式下,当Java虚拟器启动时,解释器可以首先发挥作用,而不必等待即时编译器全部编译完成后再执行,这样可以省去许多不必要的编译时间。随着时间的推移,编译器发挥作用,把越来越多的代码编译成本地代码,获得更高的执行效率。

使用场景

当一段代码一直被执行,执行次数超过规定的阈值,就会被判断为热点代码,那么JVM就是把这段代码进行编译,然后编译后的结果存储在方法区,以后用到这段代码就无需去解释运行了,直接使用编译后的结果即可

解释器

概念

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

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

  3. 当一条字节码指令被解释执行完成后,接着再根据PC寄存器中记录的下一条需要被执行的字节码指令执行解释操作

特点

速度慢,比起编译技术,这种技术速度慢,但是响应速度快,因为编译需要编译完成才能运行,而解释器解释一句运行一句。

相关推荐
setmoon2142 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
2401_833197732 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
一直都在5723 小时前
线程间的通信
java·jvm
2401_879693873 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
yunyun321233 小时前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
亓才孓4 小时前
JVM讲解
jvm
我真会写代码4 小时前
深入理解JVM堆体系:分代空间与内存管理核心逻辑
jvm
顶点多余4 小时前
进程间通信 --- 共享内存篇(通信速度最快)
linux·服务器·jvm
爱丽_4 小时前
ThreadLocal 机制:弱引用 Entry、内存泄漏、线程池复用与线上排查
java·jvm·算法
Sunshine for you5 小时前
如何用FastAPI构建高性能的现代API
jvm·数据库·python