首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

GraalVM是一种高性能的通用虚拟机,它支持多种编程语言,并提供了SubstrateVM作为其原生映像技术。原生映像是指将应用程序及其依赖项编译成本地机器码,以实现更快的启动时间和更低的内存消耗。

相比于使用JIT(即时编译)构建的应用程序,GraalVM原生映像在运行时使用的内存要少得多的原因有以下几点:

  1. AOT编译:GraalVM的SubstrateVM使用AOT(Ahead-of-Time)编译技术,即在应用程序运行之前将其编译成本地机器码。这样做的好处是,应用程序在运行时不需要进行即时编译,从而减少了内存的使用。
  2. 优化的静态分析:SubstrateVM对应用程序进行静态分析,识别出不需要的代码和依赖项,并将其从原生映像中剔除。这样可以减少内存占用,并提高应用程序的运行效率。
  3. 垃圾回收优化:GraalVM的SubstrateVM针对原生映像进行了优化,采用了更加紧凑的垃圾回收算法,减少了内存碎片和垃圾回收的开销,从而降低了内存的使用。
  4. 静态库链接:SubstrateVM将应用程序及其依赖项静态链接成一个单独的可执行文件,避免了动态链接库的加载和内存占用。

总结起来,GraalVM的SubstrateVM原生映像在运行时使用的内存比相应的JIT构建要少得多,主要得益于AOT编译、优化的静态分析、垃圾回收优化和静态库链接等技术。这使得原生映像具有更低的内存消耗,更高的运行效率,并适用于对内存占用有严格要求的场景,如嵌入式设备、云函数等。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(Serverless):https://cloud.tencent.com/product/scf
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云云原生应用平台(TKE App):https://cloud.tencent.com/product/tke-app
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot 3.2 和 Spring Framework 6.1添加对 Java 21、虚拟线程和 CRaC 的支持

Spring Framework 6.1(2023 年 11 月 16 日 发布)和 Spring Boot 3.2(2023 年 11 月 23 日 发布)支持运行在 Java 21 之上。这些版本将通过虚拟线程使并发编程更简单、更高效,并改进了反应式编程和 Kotlin 协程。为了缩短“缩容至零(Scale to Zero)”的启动时间,这两个版本对 OpenJDK 的检查点协调恢复(Coordinated Restore at Checkpoint,CRaC) 项目提供了初步支持,而现有的 GraalVM Native Image 支持也通过新发布的 GraalVM 版本得到了显著的性能提升。Spring Framework 6.2 和 Spring Boot 3.4 计划在 2024 年 11 月份发布,将支持即将发布的 Jakarta EE 11,并与 Leyden 项目的 premain 优化保持一致。

01
领券