JVM:JIT实时编译器

一、相关

  • ⾼级编程语⾔按照程序的执⾏⽅式分为两种

    • 编译型:一次性将代码编译为机器码
    • 解释型:通过解释器一句一句的将代码解释为机器码之后,再运行。每个语句都是执行的时候才翻译。
  • JAVA代码执行过程

    • (编译阶段)首先将Java文件编译为字节码class
    • (解释阶段)将字节码解释为对应平台的机器码

二、JIT实时编译器

  1. Java 语⾔通过字节码的⽅式,在⼀定程度上解决了传统解释型语⾔执⾏
    效率低的问题,同时⼜保留了解释型语⾔可移植的特点。
  2. 在进一步优化执行效率,引入JIT实时编译器,这个编译器运行在解释阶段。当 JIT 编译器完成第⼀次编译后,其会将字节码对应的机器码保存下来,下次可以直接使⽤。
  3. 具体执行过程
    1. Java的执行过程整体可以分为两个部分,第一步由javac将源码编译成字节码,在这个过程中会进行词法分析、语法分析、语义分析,编译原理中这部分的编译称为前端编译。
    2. 接下来无需编译直接逐条将字节码解释执行,在解释执行的过程中,虚拟机同时对程序运行的信息进行收集,被JVM认定为的热点代码,会进行后端编译------把字节码编译成机器码,将字节码对应的机器码保存下来,下次可以直接使⽤。
  4. 怎么样才会被认为是热点代码呢?
    1. JVM中会设置一个阈值,当方法或者代码块的在一定时间内的调用次数超过这个阈值时就会被编译,存入codeCache中
    2. 当下次执行时,再遇到这段代码,就会从codeCache中读取机器码,直接执行,以此来提升程序运行的性能。
相关推荐
yh弓长1 小时前
JVM 核心机制
jvm
tg_xianheyun1 天前
腾讯云国际账号注册代充值适合哪些海外业务场景?
jvm
yuniko-n1 天前
【JVM】对象内存布局
java·开发语言·jvm
wuminyu1 天前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
wuminyu1 天前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
骑着蜗牛撵大象3272 天前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
tryxr2 天前
JVM 垃圾回收机制
java·jvm·gc·垃圾回收
我就是不信2 天前
JVM 调优实战:从排查思路到落地参数
jvm
LMT流氓兔3 天前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
wuminyu3 天前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++