在只有某些实体的空项目上,Quarkus高RAM使用率

时间:2020-10-26 18:22:58

标签: quarkus

我一直在测试Quarkus,以检查是否值得更换成本,当运行只有resteasyjsonb的空Quarkus项目时,RAM占用仅为 5MB 。但是在仅从大型项目中添加一些实体后,该项目已增长到 100MB ,我发现这是一种滥用行为,就像在春季,整个项目正在使用 180MB

复制存储库:https://github.com/KevinGuancheDarias/quarkus-owge-poo

本机运行(需要docker

$ mvn package -Pnative -Dquarkus.native.container-build=true -DskipTests
$ docker build --no-cache -f src/main/docker/Dockerfile.native -t quarkus/test .
$ docker run -i --rm -p 8080:8080 quarkus/test

用于测试尺寸的命令

docker stats 2985d8366e51 32db5040f6e7

样本输出,其中owge_all_dockerized ....是在Docker中运行的完整项目,而suspicious_borg是quarkus测试 The stats

Quarkus扩展名:agroal, cdi, hibernate-orm, hibernate-orm-panache, jdbc-mysql, mutiny, narayana-jta, resteasy, resteasy-jsonb, smallrye-context-propagation

这是预期的RAM使用量吗?

更新:仅删除hibernate ORM,但保留agroaljdbc-mysql,会使内存下降到 6MB

更新:请注意,quarkus测试和在Spring boot中运行的整个项目都将立即启动和停止,而GC没有时间填充内存了

提前谢谢!。

1 个答案:

答案 0 :(得分:1)

本机graalvm执行与运行传统Java / jar时具有不同类型的内存管理。

详细信息可以在https://www.graalvm.org/reference-manual/native-image/MemoryManagement/中找到,但是基本上它会在内存中更加积极地增长,但是您可以通过添加-mx 10m来限制它。那么它将不会超过10 mb-如果足够满足您的应用程序就可以了。

当然,如果您的应用实际上需要更多,请增加它。