SpringBoot2.4.0 已经支持 GraalVM 了
可以支持 AOT,启动速度和内存占用情况都有大幅度的提升,但是缺点是因为要做 AOT,所有的反射和动态代理都需要特殊处理,通过配置文件来声明。
附
官方文档
GitHub
可以支持 AOT,启动速度和内存占用情况都有大幅度的提升,但是缺点是因为要做 AOT,所有的反射和动态代理都需要特殊处理,通过配置文件来声明。
官方文档
GitHub
但是 native 我只能在自己本机上打包,在云上用 docker 容器编译就爆内存了好像,部署不了 ci/cd
如果不改变 Spring IOC 本身,类反射和动态代替是最基本的障碍,而这些是 Spring IOC 的基础。目前 Spring 太难了,想作到与 Quarkus 一样几乎不可能。
目前只有 Quarkus 从一开始就是支持 GraalVM 的,Quarkus 是完全抛弃现有的 Weld,重新写一个 Arc 容器(支持 CDI 子集),以适应 [ [ [编译时处理] ] ] 代替之前的 Runtime Proxy 。
Micronaount 在 2.0 以后也添加了支持。
Helidon 2.0 中 SE 版本已经支持(刚刚发布的 Helidon 2.2 还支持了 Java 16 中的 Virtual Threads )。
但是 Native 编译是费力的事,去前写的 Quarkus 的测试:
https://github.com/hantsy/quarkus-sample/blob/master/docs/01-start.md
内码启动时间(看程序大小,大约快是 10 到 100 倍,这个最明显的),至少提高一个数量级以上,一般请求性能也有一定优化,内存消耗整体降低了不少。