Quarkus 本机可执行文件构建:高内存消耗

Ben*_*Ben 5 docker-multi-stage-build quarkus

我正在使用多阶段 Docker 构建构建 Quarkus 本机可执行文件,如中所述 Quarkus - Building a Native Executable 中所述

我的项目只包括 Hello World-Example 和一些添加的 ORM 功能(所以不是很多依赖项)。构建工作正常,但我的问题是,它在构建期间消耗了大量内存。这意味着最多6 GiB. 我认为构建时间也很长(总共约 4-6 分钟)。

当我在我们的 CI/CD 基础设施上构建时,问题就开始了。我们那里没有那么多内存,所以构建失败了Error: Image build request failed with exit status 137

我做错了什么还是这只是正常行为?有没有可能至少减少内存消耗?

Ben*_*Ben 6

感谢 Ken 和 Luca Burgazzoli!因此,GraalVM 使用 >4GiB 的 RAM 并花费超过 3 分钟是正常的。

可以通过-J-Xmx2GadditionalBuildArgs.param指定为-param来限制内存消耗quarkus-maven-plugin。但这可能会增加构建时间。


Pan*_*ciz 5

@ben 答案是正确的,但也许更精确是有用的。您必须pom.xmlgetting-started目录中编辑并native profile添加<additionalBuildArgs>-J-Xmx2G</additionalBuildArgs>如下内容:

  <profile>
        <id>native</id>
        <activation>
            <property>
                <name>native</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>io.quarkus</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <version>${quarkus.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>native-image</goal>
                            </goals>
                            <configuration>
                                <enableHttpUrlHandler>true</enableHttpUrlHandler>
                <additionalBuildArgs>-J-Xmx2G</additionalBuildArgs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                     ...
                </plugin>
            </plugins>
        </build>
    </profile>
Run Code Online (Sandbox Code Playgroud)