当我用quarkus构建我的应用程序的本机映像时,我得到一个大小为150MB的可执行文件(关联的jar大小为12MB,我怀疑底层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 IQkYoQ。巴布亚新几内亚
我已经成功地用Quarkus/Graal构建了一个本机映像,我可以在终端中运行它(还没有容器)。但是,它会因“分段错误(堆芯转储)”消息而崩溃。如何获得有关错误的更多信息?是否有标志要传递给本机可执行文件或在构建映像时传递? 我使用的是GraalVM版本20.2.0(Java版本11.0.8) 任何帮助都是非常感激的。 谢谢
当我建立一个本土形象时,我面临着一个反思的问题 通用域名格式。神谕svm。主持。代替DeletedElementException:不支持的java字段。朗,同学们。newInstanceCallerCache是可访问的:此元素的声明类已被替换,但替换类中不存在此元素 我该怎么修?我的环境GraalVM 20和Zulu OpenJdk11 我的pom
我尝试在java中使用本地化以本地样式打印日期。我已经使用数字和货币制作了类似的功能,但我未能将相同的行为应用到日期。 正如我在几天前发布此主题时所了解的,GraalVM Quarkus Locale在本机模式下,使用本机模式下的本地化需要使用创建一个“@AutomaticFeature”。 这个技巧适用于数字和货币: 但它不适用于DateTimeFormatter: 在开发模式下一切正常,但在原
我已经为我的数据源设置了一个prod配置来连接到GCP MySQL实例,基本上遵循以下教程:https://quarkus.io/guides/deploying-to-google-cloud#using-cloud-sql 配置为: 我还把它加到了maven上: 然后我用 然后我将图像推送到我的GCP注册表,并从GoogleRun启动它。 这部分工作得很好! 关键是,我希望使用本机映像,因此我
有可能在Java 16下构建本机Quarkus映像吗?没有找到任何操作说明。 不知何故,这应该是可能的,因为Oracle发布了对Java16的GraalVM支持(https://www.graalvm.org/release-notes/21_1/)
我有以下简化设置: 4)应用程序.属性 当我使用本机maven配置文件(mvn clean package-pnative)运行该文件时,我得到: 使用--report-unsupport-elements-at-runtime运行它也没有太大帮助。当我删除MyEntity类时,它在Mac+GRAALVM-CE-Java11-20.0.0上成功地编译为本机可执行文件