为什么GraalVM(SubstrateVM)本机映像在运行时使用的内存要比相应的JIT构建少得多?

时间:2020-04-06 03:39:32

标签: jvm graalvm graalvm-native-image substratevm

我想知道为什么Java应用程序的GraalVM(SubstrateVM)本机映像可以在运行时行为消耗更少的内存的情况下运行它,但是如果正常运行,它将消耗更多的内存?

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

1 个答案:

答案 0 :(得分:1)

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

因此,实际上可以完成有用工作的JIT不可能以相同的零开销实现。

有可能创建一种虚拟机的经济实现,该实现可能比HotSpot占用更少的内存。特别是如果您只想测量缺省配置,而不比较控制JVM允许使用的内存量的设置。但是,需要意识到这要么是对现有实现的增量改进,要么是要权衡取舍的另一种选择,因为现有的JVM实现实际上是非常好的。