Skip to content

Commit ae31c08

Browse files
committed
Update java-basic-questions-01.md
1 parent ccb2637 commit ae31c08

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

docs/java/basis/java-basic-questions-01.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
5858
5959
### 为什么不全部使用AOT呢?
6060

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

6365
### 为什么说 Java 语言“编译与解释并存”?
6466

0 commit comments

Comments
 (0)