当前位置: 首页 > 知识库问答 >
问题:

何时以及为什么本机映像需要子策略VM框架?

路和悌
2023-03-14

我读过关于GraalVM和SubstrateVM框架的文章。我知道,native image命令可用于从Java源文件创建本机应用程序,如下所示:

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

这将创建一个本机二进制Hello,根据这个问题,它由提供...

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

我不清楚这一点:

  • 何时以及为什么需要SubstrateVM框架?是只在本机构建时需要,还是在运行时也需要?hello二进制文件是由纯目标机器字节码组成,还是仍然有Java字节码和一个完全成熟的虚拟机嵌入,即SubstrateVM
  • 与通常的hello世界相比,这需要运行hello本机映像 C程序

共有1个答案

柯良骏
2023-03-14

理解正在发生的事情的一个很好的例子是垃圾收集器。

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

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

 类似资料:
  • 所有其他唤醒锁都是有意义的,例如开发人员希望在执行某些操作时屏幕不会关闭。但在部分唤醒锁定文档中说: 如果您保持部分唤醒锁定,CPU将继续运行,而不考虑任何显示超时或屏幕状态,甚至在用户按下电源按钮后。在所有其他唤醒锁中,CPU将运行,但用户仍可以使用电源按钮将设备置于睡眠状态。 这是否意味着在执行某些操作时CPU可能会关闭?是否需要在服务中获取唤醒锁?

  • 问题内容: 令我惊讶的是,StackOverflow上没有人问过这个问题。 通过JSON对象文档和快速的Google搜索无法获得令人满意的结果。 有什么好处?它是如何工作的? 编辑:为了清楚起见,请看一下这个展平/未展平的示例。 谢谢。 问题答案: 在许多情况下,您会获得由某些库自动构建的JSON文本。在整个编程语言中,有许多库构建JSON文本(此处是一个示例 每当库添加一些其他对象或数组包装时,

  • 我正在查看的源代码,在api文件夹中有一个文件,内容如下: 我听说这个文件是打字稿类型定义。这是什么?为什么需要它?

  • 问题内容: Docker和虚拟机的映像是否存在差异?除了图像格式,我在任何地方都找不到任何信息。请注释掉图像大小,实例创建时间,捕获时间等内容。谢谢! 问题答案: 这些是我可以列出的docker和VM映像之间的一些区别: 1. Docker中的快照过程比VM更快 我们通常从基本映像开始,然后进行更改,然后使用docker提交这些更改,然后创建一个映像。该图像仅包含与基准的差异。当我们要运行图像时,

  • Docker和虚拟机的映像有什么区别吗?除了图像格式,我在任何地方都找不到任何信息。请评论像图像大小,实例创建时间,捕获时间等。谢谢!

  • 问题内容: 我正在尝试了解如何在Spring应用程序中使用JBoss EAP6。我有一个示例OpenShift应用程序,它包含一个文件。 我找到了有关此文件的一些文档,但是我不清楚为什么以及何时应该在Spring应用程序中使用这些文件。内容如下: 为什么需要声明对模块的依赖关系?JBoss范例中的模块是什么?没有这个xml文件是否可以生存? 问题答案: 只要您的应用程序没有任何类加载问题,就不需要