The Call of Ctooling: The Secrets Behind Native Image Building
summary
Explains how GraalVM native-image actually builds a self-contained executable by running build-time initialization and taking a heap snapshotting of reachable objects, compiling reachable bytecode via points-to analysis until a fixed point, and embedding a code section plus an image heap data section. Notes concrete startup costs (e.g. before main: ~3 class loaders, ~500 class loads, ~160 class initializers), warns about pitfalls like serializing a random seed, and cites related work and tools (gcj, Excelsior, CRaC, Project Leyden, Cubic) and mmap/pointer-fixup loading at runtime.
AI-written summary · about
chapters (16)
- 0:00Introduction
- 3:00History
- 8:09Today
- 13:28Checkpoint
- 14:35What is growl VM
- 17:42How growl VM works
- 20:29How static initializers work
- 21:59How many things are going on
- 22:57Static Initializer
- 28:29Project Leiden
- 28:54Goal
- 29:36The Cubic Project
- 30:22Cubic Architecture
- 30:53Cubic Architecture Example
- 32:23Resources
- 33:45Summary
related talks
55mNative Image: Large-scale static analysis for Java
38mImproving GraalVM Native Image
31mGraalVM native images explained
29mGraalVM in a Nutshell
52mGraalVM native images explained
44mSelf-contained Native Binaries for Java with GraalVM
39mSupercharge your Native Image applications 🚀
01h 00mStatic Java, GraalVM Native and OpenJDK
