【问题标题】:When and why is the SubstrateVM Framwork Required for a Native Image?原生映像何时以及为何需要 SubstrateVM 框架?
【发布时间】:2020-01-12 13:04:38
【问题描述】:

我读到了GraalVMSubstrateVM 框架。我了解native-image 命令可用于从 Java 源文件创建本机应用程序,如下所示:

$ javac Hello.java
$ native-image --no-server --no-fallback Hello
$ ./hello
Hello World!
$

这将创建一个本机二进制文件 hello,根据 question,它由 SubstrateVM 框架提供支持,该框架提供...

...在没有 JVM 的情况下实际运行提前编译的 Java 字节码所需的其他东西(运行时)。

我不清楚:

  • 何时以及为何需要 SubstrateVM 框架?仅在本机构建时需要还是在运行时也需要? hello 二进制文件是由纯目标机器字节码组成,还是仍然存在 Java 字节码和嵌入的成熟虚拟机,即 SubstrateVM?
  • 与通常的 Hello World! C 程序相比,运行 hello 本机映像需要哪些开销?

【问题讨论】:

    标签: java graalvm graalvm-native-image substratevm


    【解决方案1】:

    垃圾收集器就是一个很好的例子来理解发生了什么。

    JVM 有一个,因此您不必手动管理内存。但是,当您构建本机映像时,您的 java 代码中没有一个,对吗?因此,本机映像工具将 SubstrateVM 垃圾收集器与您的应用程序捆绑在一起,以便生成的二进制文件可以收集它自己的垃圾,而您不必这样做。

    这意味着在构建时和运行时都需要 Substrate VM。这也意味着二进制文件中没有任何字节码,也没有“嵌入成熟的虚拟机”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      相关资源
      最近更新 更多