You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket Pipeline构建Quarkus原生镜像内存溢出如何解决

可调整的内存相关配置及优化方案

  • 配置GraalVM原生镜像的堆内存上限
    按照报错提示配置quarkus.native.native-image-xmx参数,直接指定原生构建过程的最大堆内存:

    1. 直接在Maven构建命令中追加参数,将script部分的构建命令修改为:
      ./mvnw package -Pnative -Dquarkus.native.native-image-xmx=6g
    2. 也可以在项目的application.properties配置文件中添加固定配置:
      quarkus.native.native-image-xmx=6g
      注意设置的数值要小于构建容器可用的内存上限,预留1G左右的缓冲空间避免溢出。
  • 调整Maven自身的JVM内存限制
    Maven运行过程本身也会占用内存,可在构建前先设置MAVEN_OPTS参数,避免Maven进程先触发OOM,修改后的script配置参考:

    script:
      - export MAVEN_OPTS="-Xmx1g"
      - ./mvnw package -Pnative -Dquarkus.native.native-image-xmx=6g
    
  • 优化Bitbucket Pipeline的内存分配逻辑
    2x规格的step总可用内存为8GB,该内存需要同时分配给step运行容器和你声明的所有服务,你当前给Docker服务分配了7128M内存,导致留给构建容器的内存仅剩1G左右,完全无法满足原生构建需求:

    1. 如果你的构建过程不需要用到Docker服务(仅用基础镜像自带的native-image工具完成构建,不需要在构建阶段启动容器化中间件),可以直接删除配置里的services字段和definitions下的docker服务配置,把全部8GB内存留给构建容器,此时native-image-xmx可以调整到7g。
    2. 如果你确实需要保留Docker服务,可以降低Docker的内存分配,比如调整为memory: 4096,留出4GB内存给构建容器,对应native-image-xmx设置为3g。
  • 清理冗余依赖降低构建开销
    切换数据库后如果没有删除原来的MongoDB相关依赖,两类数据库驱动和相关扩展会大幅增加GraalVM原生构建时的类分析开销,额外占用大量内存,建议检查POM文件,完全移除所有未使用的MongoDB相关依赖。

内容的提问来源于stack exchange,提问作者Georg Leber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:24:05