Quarkus原生图像大小



当我用quarkus构建应用程序的本地映像时,我会得到一个大小为150MB的可执行文件(相关的jar大小为12MB,我怀疑Substrate VM是否能弥补所有空间(。这是正常的还是我做错了什么?有没有一种方法可以像记录本机映像中加载的内容一样进行调查?

$ du -sh target/placeholder-1.0.0-SNAPSHOT-runner                                                                                                                     1.9m  mar. 06 juil. 2021 00:13:58
150M    target/placeholder-1.0.0-SNAPSHOT-runner
$ du -sh target/placeholder-1.0.0-SNAPSHOT.jar                                                                                                                               mar. 06 juil. 2021 00:14:32
12M     target/placeholder-1.0.0-SNAPSHOT.jar

是的,二进制文件的大小可以大于jar文件。它主要由两部分组成:编译为二进制的应用程序代码和;图像堆";应用程序的预初始化数据结构和组件。例如,如果应用程序在构建时初始化任何类,那么这些类的静态字段的值将被序列化到图像堆中。这可以帮助启动应用程序,因为它不需要再次初始化这些程序,但也可以使二进制文件更大。

您可以为本机图像构建过程启用一些报告选项,以及帮助您理解图像内容的工具。

从上面链接的文章中,您可以在这里使用-H:+DashboardAll选项和仪表板工具(它托管在github上,离线工作(:https://www.graalvm.org/docs/tools/dashboard/?ojr=dashboard

然后它可以可视化需要空间的东西,例如:https://miro.medium.com/max/2400/1*mWIhq53ALPiI2GP-ICKYoQ.png

最新更新