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

为什么 GraalVM(基底 VM)本机映像在运行时使用的内存比相应的 JIT 生成少得多?

鱼锦
2023-03-14

我想知道为什么Java应用程序的GraalVM(SubstrateVM)本机映像会让它在运行时行为消耗更少内存的地方运行,而如果正常运行,它会消耗更多内存?

为什么普通的JIT不能同样地消耗少量内存?

共有1个答案

索正豪
2023-03-14

GraalVM本机映像不包括即时编译器或相关的基础设施,因此不需要为JIT分配内存,也不需要为JIT程序的内部表示(例如控制流图)分配内存,不需要存储一些类元数据,等等。

因此,实际执行有用工作的JIT不太可能以相同的零开销实现。

有可能创建一个比HotSpot使用更少内存的经济的虚拟机实现。特别是如果您只想测量默认配置,而不想比较控制JVM允许使用的内存量的设置。然而,人们需要认识到,它要么是对现有实现的增量改进,要么是选择不同的选项进行某种折衷,因为现有的JVM实现实际上非常非常好。

 类似资料:
  • 失败:生成失败,出现异常。 错误:执行任务“:QuarkusBuild”失败。Io.Quarkus.Builder.BuildException:生成失败:由于错误导致生成失败[error]:生成步骤Io.Quarkus.Deployment.Pkg.Steps.NativeImageBuildStep#Build引发异常:java.lang.RuntimeException:未能在io.Quar

  • 我正在尝试使用GraalVM为spring cloud gateway构建本机映像。我已经成功构建了一个可以启动的本机映像,但在第一个http请求时,我出现了以下错误: 添加此标志没有帮助 并在反射配置中添加一个条目,不是吗 该项目可以在这里找到:https://github.com/hanouard/demo-native-gateway 你知道是什么导致了这个错误吗?

  • 我无法在Catalina 10.15.2中运行命令: 它向我返回以下消息: 我试过跑步 哪里 没有运气。我无法运行该命令,因此无法成功运行该命令 mvn安装-Pnative。 [pastebin][1] 我已经读过这个[帖子][2],对我来说不起作用。 救命啊求你了 更新 好的,我已经应用了建议,现在我可以创建native-image,但是当我尝试运行mvn install-P本国时,我遇到了一个

  • 我有一些Java应用程序和一个客户,他们有一些UWP应用程序,用C#实现,通过Windows商店等分发,他们想使用我的应用程序的一些部分。这些部分完全独立于操作系统,只解析一些特殊的二进制文件格式,应用一些使用YAML文件和东西配置的业务逻辑。没有网络、GUI,只有一些文件访问等。 我们目前使用IKVM使C#可以使用感兴趣的代码,但已经遇到了不同的问题。有些支持.NET核心,有些与发行版中的本机工

  • 我设法为springboot fat jar构建了本机映像,但当我运行它时,它抛出了异常:“”。我尝试添加一个默认构造和一个空的init()方法,但都失败了。如何克服此异常并使本机映像运行? 以下是完整日志:

  • 我正在尝试将我的. jar项目转换为本地映像,因为我需要在不支持Java的设备中运行它。为此,我安装了GraalVM和所有必需的依赖项,本地映像构建工作完美(或者至少看起来是这样,因为它在过程中不会产生任何错误)。 我用于构建的命令是: /usr/lib/jvm/graalvm/bin/native image-jar-MyApp。jar MyApp——启用http——启用https——无回退——