我正在开发一个使用 gRPC 的项目,我想使用 GraalVM 的本机映像对其进行编译,以获得更好的性能和更小的内存占用。
我尝试过直接使用native-image,但是类初始化存在很多问题。我了解,在使用本机映像成功编译 gRPC 代码之前,我可能需要采取一些特定的配置或步骤。
以下是我正在寻求指导的一些特定领域:
有哪些相关资源?
是的,阴影可能会导致本机图像出现很多损坏。
native-image 不是 gRPC 定期测试的东西。但它“以前对某人有用过”。我可以相信偶尔会出现回归,但我不认为会出现很多问题。
gRPC 及其一些依赖项包括 JAR 中的本机映像配置。如果您重新定位类文件而不重写配置,该信息就会被破坏。 grpc-netty-shaded 为 Netty 着色,因此 gRPC 有自定义代码来重写本机图像配置。因此,如果您进行阴影处理,我预计这会引起问题。
与 gRPC 没有直接关系,但我堆叠在 protobuf 生成的类/jar 上。
请参阅原型构建器类上的以下异常,方法在那里,尚未找到任何解决方法。
Caused by: java.lang.NoSuchMethodException
Spring Boot 3.1.3
graalvm-jdk-17.0.8+9.1
本机-maven-插件 0.9.5