容器优先
从一开始 Quarkus 就是围绕容器优先的理念进行设计的。 这实际上意味着 Quarkus 通过以下方式针对低内存使用量和快速启动时间进行了优化:
- 支持Graal/SubstrateVM
-
Substrate support has been an important part of the design for Quarkus from the beginning. 当将应用程序编译为本地映像时,它的启动速度更快,并且可以在比标准JVM小得多的堆运行. Quarkus are all tested in Substrate, 可以不使用
-H:+ReportUnsupportedElementsAtRuntime
运行. - 构建时处理元数据
-
在构建时将进行尽可能多的处理,因此应用将仅包含运行时实际需要的类。 在传统模型中,程序初始化阶段就需要加载所有应用可能用到的类,即使只会用到一次。 使用 Quarkus,它们甚至都不会加载到生产JVM中。 由于所有元数据处理已完成,因此这将减少内存使用量,并缩短启动时间。
- 减少使用反射
-
为减少启动时间及内存使用,Quarkus 尽可能避免发射.
- 原生镜像预启动
-
当在原生镜像中运行时,Quarkus 尽可能在原生镜像构建过程中预启动框架。 这意味着生成原生镜像时已经运行了大多数启动代码,并将结果序列化进可执行文件,从而使启动速度更快。