AWS Lambdas 中对 JDK 11 的支持是否带来了任何性能改进?特别是关于冷启动?

Does support for JDK 11 in AWS Lambdas introduce any performance improvements? Especially regarding cold starts?

似乎,对于 AWS Lambdas,Java 在冷启动方面明显比其他受支持的语言慢。与 JDK 8 相比,JDK 11 是否有任何性能增强可以缩短冷启动时间?

理论上应该通过应用程序class-数据共享,它应该可以减少几秒钟的启动时间。 Class-启动 JVM 时通过“--Xshare:on”启用数据共享。

aws 在 J11 运行 时间默认启用“--Xshare:on”,启用此标志的唯一原因是他们使用 [= JDK 附带的 34=]es。

Aplication Class 应用程序 classes 的数据共享首先为 J9 引入,是仅在 OpenJDK 10 中可用的商业功能。

如果您想使用 OpenJdk 11 测试这对您的 lambda 函数的影响,那么您可以 运行

java -Xshare:dump

然后在您的 $JAVA_HOME/lib/server 中,您应该会看到 jdk 存档 classes.jsa,如下所示

然后你会 运行 你的测试带有标志

java -Xshare:on ....

并且 jvm 将从这个存档中加载 jdk class
运行 本地 lambda 测试 docker 容器的这个集合是一个不错的选择
https://github.com/lambci/docker-lambda

Java 11 AWS Lambda 运行时的冷启动甚至比 Java 8.

对于小型 Lamda 设置 (256Mb),差异约为 2 秒。请阅读https://medium.com/@filia.aleks/java-11-vs-8-performance-for-aws-lambda-c6e64ea6424