1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Update java-basic-questions-01.md

This commit is contained in:
guide 2022-07-11 23:37:49 +08:00
parent ccb263769b
commit ae31c081bf

View File

@ -58,7 +58,9 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
### 为什么不全部使用AOT呢
爱思考的铁子们一定在想AOT可以提前编译节省启动时间那为什么不全部使用这种编译方式呢长话短说这就和java语言的动态特性有千丝万缕的联系了。举个例子比如CGLib动态代理使用的是ASM技术而这种技术大致原理是运行时直接在内存中生成并加载修改后的字节码文件也就是.class文件如果全部使用AOT提前编译也就不能使用ASM技术了。为了支持类似的动态特性所以选择使用JIT即时编译器。
AOT 可以提前编译节省启动时间,那为什么不全部使用这种编译方式呢?
长话短说,这和 Java 语言的动态特性有千丝万缕的联系了。举个例子CGLIB 动态代理使用的是 ASM 技术,而这种技术大致原理是运行时直接在内存中生成并加载修改后的字节码文件也就是 `.class` 文件,如果全部使用 AOT 提前编译,也就不能使用 ASM 技术了。为了支持类似的动态特性,所以选择使用 JIT 即时编译器。
### 为什么说 Java 语言“编译与解释并存”?