我为什么需要JVM来运行AOT编译的代码?

3

我正在学习GraalVM和AOT,阅读了AOT规范后感到困惑,如果AOT将我的代码编译成机器码(本地代码),为什么还需要JVM?
我为什么需要这个呢:

java -XX:AOTLibrary=./libHelloWorld.so HelloWorld
1个回答

5

你仍然需要JVM,因为你只编译了一个小部分即“你的HelloWorld”到本地代码。你仍然需要很多JVM来运行你的程序,例如Java标准库(你没有编译成本地代码)、类加载、检测程序入口点(找到你的主方法)和垃圾回收。所有这些都由JVM提供。

简而言之,你只是将库、程序的一小部分编译成本地代码。你没有将整个程序编译成本地代码。

这也在JEP295摘要中说明:

摘要
在启动虚拟机之前将Java类编译为本地代码。

我认为你实际想做的是编译程序的本地镜像。这将包括从JVM到可执行文件的所有影响,如垃圾回收。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接