Java Goes AOT
summary
An experimental AOT pipeline compiles java.base into shared libraries on Linux x86_64 using Graal as the compiler and libelf to produce ELF shared objects, with a planned jlink plugin. It currently inlines only static/final leaf methods, compiles many paths to avoid deopts, and reports up to 30% startup faster on some workloads; java.base produces ~44k compiled methods (~120 MB library) and per-instance code cache can shrink by ~22 MB. Bootstrap of the compiler itself drops from ~28 s to ~263 ms when a few methods are precompiled.
AI-written summary · about
chapters (13)
- 0:00Intro
- 1:00Program Agenda
- 4:12AOT compiler (1/2)
- 10:41Container format
- 13:03Current status
- 21:01javac Performance
- 22:50javac compiling 1.7 javac
- 24:37JRuby 9k startup
- 28:48SPECjvm98
- 31:34SPECjbb2013: Sharing
- 33:56Shared library sharing
- 36:11Graal bootstrap (1/2)
- 39:09Graal- first compilations
related talks
50mFull Speed Ahead! Ahead of Time Compilation for Java SE
51mGoing AOT: Everything you need to know about GraalVM for Java applications
46mAhead Of Time (AOT) Internals
56mBaselining AArch64 Java AOT Performance
01h 00mStatic Java, GraalVM Native and OpenJDK
35mJava in a world of containers
50mAOT or JIT: Faster Startup or Faster Code?
38mAOT or JIT: Faster Startup or Faster Code?
