Reduce Cold Starts for Java Serverless Applications in AWS
summary
Java cold starts on AWS measure around 3–3.5 seconds for plain JVMs; using GraalVM Native Image brings p90 cold starts down to roughly 500–600 ms but forces Linux native builds and heavy CI (several GB RAM and custom runtimes). AWS Lambda SnapStart (based on CRaC) restores snapshots in about 689 ms end-to-end; adding priming (e.g., warming Jackson, DynamoDB clients during snapshot) cuts restore latency further and can push P99 below ~1s. SnapStart adds ~2m deployment time, only supports Java 11+, x86_64, and omits ARM and some regions.
AI-written summary · about
chapters (14)
- 0:00Introduction and speaker intro
- 1:48Java popularity and serverless adoption
- 4:13Understanding cold starts in Lambda
- 7:47Example application and cold start measurements
- 10:37Optimizing Java Lambda configurations
- 16:21Avoiding reflection and dynamic class loading
- 17:03GraalVM native image for cold starts
- 23:02AWS SnapStart explained
- 29:21SnapStart with optional snapshots and priming
- 33:13Performance comparison of techniques
- 37:10SnapStart limitations and trade-offs
- 39:41Provisioned concurrency and proactive initialization
- 41:49Future of Java cold start improvements
- 42:55Q&A session
related talks
51mHow To Reduce Cold Starts for Java Serverless Applications in AWS
53mHigh performance Serverless Java on AWS
51mAdapting Java for the Serverless world!
44mHow to develop, run and optimize Spring Boot 3 application on AWS Lambda
34mThawing Java on AWS Lambda
01h 00mAdapting Java for the Serverless world
51mAfraid of Java Cold Starts in Serverless? Fear Not, Java is Super Fast!
56mAfraid of Java cold starts in Serverless? Fear not, Java is fast
