Quarkus 原生图像大小
Quarkus native image size
当我使用 quarkus 构建我的应用程序的本机映像时,我得到了一个大小为 150MB 的可执行文件(相关的 jar 大小为 12MB 我怀疑 Substrate VM 能否弥补所有这些space).这是正常的还是我做错了什么?有没有办法像记录本机映像中加载的内容一样进行调查?
$ 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 文件。
它主要由两部分组成:编译为二进制的应用程序代码和“图像堆”,即应用程序的预初始化数据结构和组件。
例如,如果您的应用程序在构建时初始化任何 类,那么这些 类 的静态字段的值将被序列化到图像堆中。这可以帮助应用程序启动,因为它不需要再次初始化这些,但它也可以使二进制文件更大。
您可以为本机图像构建过程和图像内容的 tools that help you make sense 启用报告选项。
从上面链接的文章中,您可以在此处使用 -H:+DashboardAll
选项和仪表板工具(它托管在 github 上并离线工作):https://www.graalvm.org/docs/tools/dashboard/?ojr=dashboard
然后它可以可视化 space 的例子,如下所示:
https://miro.medium.com/max/2400/1*mWIhq53ALPiI2GP-IQkYoQ.png
当我使用 quarkus 构建我的应用程序的本机映像时,我得到了一个大小为 150MB 的可执行文件(相关的 jar 大小为 12MB 我怀疑 Substrate VM 能否弥补所有这些space).这是正常的还是我做错了什么?有没有办法像记录本机映像中加载的内容一样进行调查?
$ 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 文件。 它主要由两部分组成:编译为二进制的应用程序代码和“图像堆”,即应用程序的预初始化数据结构和组件。 例如,如果您的应用程序在构建时初始化任何 类,那么这些 类 的静态字段的值将被序列化到图像堆中。这可以帮助应用程序启动,因为它不需要再次初始化这些,但它也可以使二进制文件更大。
您可以为本机图像构建过程和图像内容的 tools that help you make sense 启用报告选项。
从上面链接的文章中,您可以在此处使用 -H:+DashboardAll
选项和仪表板工具(它托管在 github 上并离线工作):https://www.graalvm.org/docs/tools/dashboard/?ojr=dashboard
然后它可以可视化 space 的例子,如下所示: https://miro.medium.com/max/2400/1*mWIhq53ALPiI2GP-IQkYoQ.png