JVM 执行引擎

概念

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

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

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

程序执行步骤

解释器与编译器区别

编译器

概念

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

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

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

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

使用场景

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

解释器

概念

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

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

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

特点

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

相关推荐
秋邱14 小时前
驾驭数据洪流:Python如何赋能您的数据思维与决策飞跃
jvm·算法·云原生·oracle·eureka·数据分析·推荐算法
HappRobot16 小时前
WebLogic服务器的JVM参数调整
服务器·jvm·chrome
那我掉的头发算什么19 小时前
【javaEE】多线程进阶--CAS与原子类
android·java·jvm·java-ee·intellij-idea
q***69771 天前
java进阶1——JVM
java·开发语言·jvm
码力码力我爱你1 天前
C++静态变量依赖关系
java·jvm·c++
Java爱好狂.1 天前
2025全年Java面试真题总结!
java·jvm·高并发·多线程·java面试·后端开发·java八股文
嘟嘟w2 天前
JVM(Java 虚拟机):核心原理、内存模型与调优实践
java·开发语言·jvm
G皮T2 天前
【Java】Java 运行时数据区域(一):名词概念
java·jvm·runtime·运行时·运行时数据区域
小年糕是糕手2 天前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
七夜zippoe2 天前
JVM调优实战:从GC日志分析到参数配置(Xmx, Xms, XX:+)
java·jvm·gc·jit·垃圾回收器