0%

AOT与JIT

AOT 与 JIT

JIT AOT
Just-in-Time, 实时编译 Ahead-of-Time,预编译或提前编译
Java跨平台的基础 无法跨平台

AOT的优点

  • 启动和运行的速度快(传统SpringBoot空项目启动时间大概是2秒,AOT的启动时间大概是100毫秒)

  • 打包体积小

AOT的缺点

  • 编译后的程序不支持跨平台

  • 不支持动态功能,如 AOP(面向切面编程,Aspect Oriented Programming)

JIT在高并发中的生产问题现象

现象: 热点应用重启后,出现业务超时,几分钟后恢复正常

解决方法:

  • 预热: 初始让程序自动运行热点代码几百次

  • 流量控制: 启动时小流量,运行几分钟后逐步放到正常流量

GraalVM代替JDK实现AOT

GraralVM 同样出自于 Oracle。它是一个跨语言的通用虚拟机,不仅支持了 Java、Scala、Groovy、Kotlin等基于 JVM 的语言,以及 C、C++等基于 LLVM 的语言,还支持其他像 JavaScipt、Ruby、Rust、Python 和 R 语言等。