当前位置: 首页 > news >正文

Java 解释器和即时解释器(JIT)之间的区别

区别是: 翻译 .class (字节码文件) 的粒度和方式不同

解释器是一个逐条解释并执行字节码指令的组件,每次**只翻译一条**指令并执行,然后再翻译下一条指令。
它的翻译粒度是一条指令,而且是按需翻译,也就是只有在需要执行某条指令时才进行翻译。
因此,解释器的执行速度相对较慢。

即时编译器是将字节码文件中的整个方法编译为本地机器码的组件,它会对整个方法进行静态分析和优化,并生成最优的机器码。
它的翻译粒度是整个方法,而且是在运行时进行翻译和优化的。
因此,即时编译器的执行速度相对较快。

需要注意的是,即时编译器不是一次性将整个程序都翻译成机器码,而是按照需要逐个方法进行翻译和优化的。
当一个方法被多次调用时,即时编译器会根据实际情况对该方法进行翻译和优化,从而提高该方法的执行效率。

因此,可以将解释器和即时编译器看作是两种不同的执行模式,解释器是按需执行和翻译,即时编译器是预先翻译和优化。但两者并不是相互独立的,JVM 可以根据程序的实际情况动态地选择最优的执行模式,以提高程序的执行效率。

注:什么是本地机器码

本地机器码(Native Code)是指针对特定硬件平台和操作系统的机器语言代码,可以直接在该平台上运行。与高级语言(例如 Java)不同,本地机器码不需要经过翻译或解释,可以直接被计算机硬件执行。

在 Java 中,源代码被编译成字节码文件,而字节码文件需要通过解释器或即时编译器转换成本地机器码才能被执行。本地机器码的优势在于它可以直接在硬件上运行,因此执行速度相对较快,并且可以更好地利用硬件资源。缺点是它不具备跨平台特性,因为不同的平台使用的指令集是不同的,因此需要针对每个平台进行编译。

在 Java 中,即时编译器可以将字节码文件中的整个方法编译成本地机器码,从而提高程序的执行效率。但即时编译器也需要考虑不同的平台和操作系统,因此在编译过程中需要进行特定的优化和适配。

http://www.lryc.cn/news/21392.html

相关文章:

  • Acwing 蓝桥杯 第二章 二分与前缀和
  • CSDN原力增长规则解读 实测一个月
  • HDMI协议介绍(三)--InfoFrame
  • 【RocketMQ】源码详解:Broker端消息储存流程、消息格式
  • IoT项目系统架构案例2
  • Vue echarts封装
  • 蓝桥杯入门即劝退(二十二)反转字符(不走寻常路)
  • 数据仓库Hive
  • 嵌入式 STM32 步进电机驱动,干货满满,建议收藏
  • 详讲函数.2.
  • 行测-判断推理-图形推理-位置规律-旋转、翻转
  • linux shell 入门学习笔记15 shell 条件测试
  • Apollo(阿波罗)分布式配置安装详解
  • Vue3之组件
  • 【网络】套接字 -- UDP
  • Lambda原理及应用
  • 运动耳机推荐、最值得入手的运动耳机清单共享
  • c盘爆满--如何清理电脑C盘
  • Nginx配置web服务器及部署反向代理
  • mvvm和mvc
  • JavaScript while 循环
  • CMU15-445 Project.0总结
  • 计算机网络题库---错题本
  • 【react】react创建项目与引入AntD组件库:
  • hook与mixin
  • 【C语言】自定义类型
  • 没有上司的舞会(C++,树形DP)
  • 【java基础】static和final关键字的作用及其用法详解
  • #集成学习#:bagging、boosting、stacking和blending
  • NCRE计算机等级考试Python真题(一)