繁体   English   中英

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

[英]Why do I need JVM to run an AOT compiled code?

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

java -XX:AOTLibrary=./libHelloWorld.so HelloWorld

您仍然需要 JVM,因为您只是将一小部分(即“您的 HelloWorld”)编译为本机代码。 您仍然需要大量的 JVM 来运行您的程序。 例如 Java 标准库(您还没有编译成本机代码)、class 加载、程序入口点检测(找到您的主要方法)和垃圾收集。 这一切都是由JVM提供的。

简而言之,您只是将一个库(程序的一小部分)编译为本机代码。 您不会将完整的程序编译为本机代码。

JEP295 的摘要也说明了这一点:

概括
在启动虚拟机之前将 Java 类编译为本机代码。

我认为您真正想要做的是编译程序的本机映像 这将包括所有含义,例如从 JVM 到可执行文件的垃圾收集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM