Project Leyden's AOT - Shifting Java Startup into High Gear
summary
Project Leyden shifts class loading, linking and early JIT work out of startup by recording a training run (-XX:AOTMode=record), running an assembly phase to produce an AOT cache that preloads linked classes and resolved call sites, and optionally preloads profiles for ahead‑of‑time compilation. Delivered in JDK 24 (JEP 483), this three‑phase flow yields about 2.5–3x startup improvement on demo microservices, requires loading classes in bulk, remains speculative with JIT fallback, and preserves full Java dynamic semantics.
AI-written summary · about
chapters (17)
- 0:00Project Leyden's AOT intro
- 1:05Java startup importance
- 2:51Java dynamic vs static
- 7:54Startup costs of Java
- 12:08Speculative optimization training
- 18:09Pre-main AOT cache
- 21:40Symbolic references ahead-of-time
- 23:49JDK 24 AOT workflow
- 25:15Startup with AOT cache
- 26:59Profile gathering for AOT
- 30:07JIT speculative optimization
- 31:10AOT compilation options
- 33:16AOT tiers and barriers
- 36:27AOT compatibility limits
- 37:09AOT training feedback
- 41:19AOT security
- 44:33Why training runs matter
related talks
46mAssembling Project Leyden
41mSupercharge your JVM performance with Project Leyden
51mSupercharge your JVM performance with Project Leyden
45mProject Leyden: Improving Java’s Startup Time
46mProject Leyden Update
48mProject Leyden - Capturing Lightning in a Bottle
45mSupercharge your JVM performance with Project Leyden and Spring Boot
42mSupercharge your JVM performance with Project Leyden and Spring Boot
