什么是 Java 中的 JIT(Just-In-Time)?

Sherwin.Wei Lv8

什么是 Java 中的 JIT(Just-In-Time)?

回答重点

Java 中的 JIT(Just-In-Time,即时编译)编译器是一种在程序运行时将字节码转换为机器码的技术。因为这种转换是在程序运行时即时进行的,因此得名“Just-In-Time”。

它在 Java 程序运行的时候,发现热点代码(频繁执行的代码段)时,就将这段代码编译成机器码,减少解释执行的开销,使得 Java 代码接近本地代码的性能。

扩展知识

热点代码(Hotspot Code)

JIT 编译器重点优化“热点代码”,即被多次调用或循环执行的代码。通过分析代码执行频率,JIT 能识别这些热点并进行优化编译。

这里的优化编译采用了多种技术:如方法内联(Inlining)、逃逸分析(Escape Analysis)、循环展开(Loop Unrolling)等,使得编译后的机器码更加高效。

JIT 编译的类型

  • C1(Client Compiler):用于快速启动的轻量级优化,适用于客户端应用程序。
  • C2(Server Compiler):用于长时间运行的重度优化,适用于服务器端应用程序。

JIT 的调优

JVM 提供了多种参数用于调优 JIT 编译器,如 -XX:+PrintCompilation 用于输出编译信息,-XX:TieredStopAtLevel 控制 JIT 编译级别等。

通过调优,可以在启动时间和运行性能之间取得平衡。

AOT

什么是 Java 的 AOT(Ahead-Of-Time)?

Comments