对于AWS Lambdas,在冷启动方面,Java明显比其他受支持的语言慢。与JDK 8相比,JDK 11是否有任何性能增强可以改善冷启动时间?
答案 0 :(得分:1)
理论上,它应该通过应用程序类数据共享,应该将启动时间减少几秒钟。引导JVM时,通过“ --Xshare:on”启用类数据共享。
aws默认为J11运行时启用“ --Xshare:on”,启用此标志的唯一原因是使用JDK附带的类列表生成归档的情况。
应用程序类的应用程序类数据共享最初是在J9上引入的,并且是一项商业功能,仅在OpenJDK 10中可用。
如果您想使用OpenJdk 11对lambda函数测试此效果,则可以运行
java -Xshare:dump
然后在$ JAVA_HOME / lib / server中,应看到jdk存档classes.jsa,如下所示
然后您将使用标记
运行测试java -Xshare:on ....
并且jvm将从此存档中加载jdk类
运行本地lambda测试,此docker容器集合是一个不错的选择
https://github.com/lambci/docker-lambda
答案 1 :(得分:1)
AWS Lambda的Java 11 Runtime的冷启动比Java 8还要差。
对于小型Lamda设置(256Mb),差异约为2秒。请阅读https://medium.com/@filia.aleks/java-11-vs-8-performance-for-aws-lambda-c6e64ea6424