当前位置:网站首页>JVM内存和垃圾回收-11.执行引擎
JVM内存和垃圾回收-11.执行引擎
2022-08-10 18:15:00 【J___code】
1.概述
物理机的执行引擎是直接建立在CPU、缓存、指令集和OS层面上的;JVM的执行引擎由软件实现,能够执行不被硬件直接支持的指令集格式
字节码不能直接运行在OS(因为字节码指令不等价于本地机器指令),执行引擎将字节码指令解释/JIT编译为对应平台的本地机器指令
2.Java代码编译和执行过程
橙色部分即通过javac命令生成一系列的字节码指令(前端编译器的工作)
绿色和蓝色部分是JVM需要执行的部分
下图即绿色(解释器的工作)和蓝色(JIT编译器的工作)部分详细图解:
- 解析器:JVM根据预定义规范对字节码进行逐行解释
- JIT编译器(即时编译器):JVM将源代码直接编译成和本地机器相关的机器语言
为什么Java是半解释半编译型语言?并不是因为源代码先翻译为字节码文件,字节码文件再解释执行(Java1.0时期的解释,因为没有JIT编译器)。而是因为字节码在生成机器指令时既可以使用解析器,也可使用JIT编译器
3.机器码、指令、汇编语言、字节码
3.1 机器码
- 各种用二进制编码方式表示的指令
- 用它编写的程序输入到计算机,CPU直接读取运行
- 不同的CPU对应的机器指令不同
3.2 指令
把机器码中特定的0/1序列简化为对应的指令(如mov、inc等)
不同的硬件平台的同一个指令对应的机器码可能不同
不同的硬件平台支持的指令是有差别的,所以每个平台有自己的指令集
3.3 汇编语言
- 使用助记符替换指令的操作码,用地址符号替换指令的地址
3.4 字节码
二进制文件,但是比机器码抽象
与硬件环境无关(即不同的编译器可以编译出相同的字节码文件),主要为了实现特定软件运行和软件环境(即字节码文件在不同的JVM上运行)
编译器将源码编译成字节码,特定平台上的虚拟机将字节码转译为可直接执行的指令
为什么不直接将源文件编译为不同平台的虚拟机可以执行的文件,还需要一个中间产物字节码,这不也同样也能实现字节码文件提供的跨平台性?为了实现跨语言,假设源文件是不同编程语言编写的文件,此时编写为具有相同标准的字节码文件可以方便虚拟机去编译
4.解释器
- 将字节码中的内容翻译为对应平台的本地机器指令执行
- 一条字节码指令被解释执行后,将PC寄存器中记录的下一条的字节码指令解释执行
5.JIT编译器
- 将整个函数体直接编译为机器码并进行缓存,然后CPU直接执行
既然有JIT编译器,为什么还需要解释器(比如JRockit VM就全靠JIT编译器执行)?因为JVM启动后,解释器可以先发挥作用,不必等JIT编译器全部编译再执行,省去许多不必要的编译时间。随着程序运行时间推移,JIT编译器中的热点探测功能将有价值的字节码编译为本地机器指令,提高执行效率
边栏推荐
- 「业务架构」业务能力的热图是什么,有啥用?
- Consul Introduction and Installation
- 运维如何学习、自我提升价值?
- 让mixin为项目开发助力【及递归优化新尝试】
- 设置iptables规则来保护CS服务器
- 去除富文本标签样式
- 一颗完整意义的LPWAN SOC无线通信芯片——ASR6601
- 高手问答第 290 期 —— SaaS产品经理从菜鸟到专家
- Live Review|How to build an enterprise-level cloud management platform in the multi-cloud era?(with the download of the construction guide)
- Toronto Research Chemicals BTK甜味剂配方丨D-Abequose
猜你喜欢
MySQL 原理与优化:Update 优化
requires ‘angle‘ attribute to be a multiple of 45
【FAQ】HarmonyOS ETS如何给组件设置边框
机器人控制器编程实践指导书旧版-实践六 LCD液晶显示(点阵)
[Image segmentation] Image segmentation based on cellular automata with matlab code
电路板ROHS测试报告怎么办理?电路板ROHS检测流程
报告详解影响英特尔10/11/12代酷睿处理器的ÆPIC Leak安全漏洞
运维如何学习、自我提升价值?
IoU、GIoU、DIoU、CIoU四种损失函数总结
set和map使用讲解
随机推荐
Toronto Research Chemicals 对乙酰氧基苯乙酮说明书
hping3的使用
【HMS core】【FAQ】Analytics Kit、Push Kit典型问题合集3
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
测试接口出现“data“: “Full authentication is required to access this resource“凭证已过期
6-11 Preorder output leaf nodes (15 points)
机器人控制器编程实践指导书旧版-实践六 LCD液晶显示(点阵)
Toronto Research Chemicals BTK甜味剂配方丨D-Abequose
set和map使用讲解
机器人控制器编程实践指导书旧版-实践三 直流电机(执行器)
Flexsim 发生器和暂存区设定临时实体流颜色和端口
网络层总结(未完待续)
API 网关的功能
6-11 先序输出叶结点(15分)
【HMS core】【FAQ】AR Engine、Analytics Kit、Video Editor Kit、Image Kit、Map Kit典型问题合集2
【测试】黑盒测试用例设计方法
高手问答第 290 期 —— SaaS产品经理从菜鸟到专家
Wuling Hongguang MINI EV, the only drawback is safety
企业如何通过北森HR SaaS 自动化管理员工账号生命周期
电路板ROHS测试报告怎么办理?电路板ROHS检测流程