字节码执行引擎

目录

概述

工作模式

解释器

即时编译器


概述

JVM 执行引擎有执行自身定义的代码指令(字节码指令)的能力,.java 源代码文件经过 javac 前端编译器编译之后生成对应的 .class 字节码文件,再由类加载系统将字节码加载进内存,操作系统并不能识别字节码指令,但 Java 程序却能够运行在操作系统上的原因是因为 JVM 的执行引擎

工作模式

将字节码指令通过解释器或者即时编译器转换为机器语言交给操作系统执行,高性能的 Java 虚拟机的执行引擎默认采用解释器+JIT 即时编译器混合模式执行

可以在程序启动时,通过参数来设置执行引擎的工作模式

bash 复制代码
# 完全采用解释器执行程序
-Xint

# 完全采用JIT即时编译器执行程序
-Xcomp

# 解释器+JIT即时编译器混合模式共同执行程序(默认工作模式)
-Xmixed

解释器

执行引擎执行字节码指令是通过解释器将字节码指令转换为机器指令

即时编译器

为了提高执行效率,JVM 引用 JIT 即时编译器,将经常执行的代码(热点代码)转换成本地机器码存放在热点缓冲区(位于元空间)中,后续直接执行缓冲区中的本地机器码即可

相关推荐
m0_702036537 小时前
mysql如何通过索引减少行锁范围_mysql索引与加锁逻辑
jvm·数据库·python
qxwlcsdn7 小时前
如何用 IndexedDB 存储从 API 获取的超大列表并实现二级索引
jvm·数据库·python
2301_809244537 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
BING_Algorithm7 小时前
深入理解JVM垃圾回收
jvm·后端·面试
笨蛋不要掉眼泪8 小时前
Java并发编程:线程的创建和运行
java·开发语言·jvm
qxwlcsdn9 小时前
mysql在事务中执行DDL的后果_MySQL 8.0之前的限制
jvm·数据库·python
2401_884454159 小时前
如何防止SQL触发器导致性能下降_通过精简触发器逻辑
jvm·数据库·python
m0_596749099 小时前
Golang如何做Clean Architecture_Golang整洁架构教程【详解】
jvm·数据库·python
czt_java9 小时前
线程安全问题
java·开发语言·jvm
2401_8676239810 小时前
如何管理应用锁_DBMS_LOCK申请自定义锁控制并发逻辑
jvm·数据库·python