The Virtual Machine Under the Hood
summary
Explains how the JVM uses three compilers—javac to bytecode, C1 for quick compilation, and C2 for later profile-guided optimization—combined with tiered compilation (tiers 0–4) that promotes or deoptimizes methods based on call/loop counters. Covers GraalVM’s native-image option for faster startup and smaller heaps and the Java-based Graal compiler (with 62 optimizations), and notes JEP 410’s removal of Graal from the JDK bundle while keeping JVMCI and external use available.
AI-written summary · about
chapters (19)
- 0:00JVM intro
- 1:05What is JVM
- 2:30Compilation trade-offs
- 5:21JIT compilation
- 7:30C1 C2 roles
- 9:45Client vs server JVM
- 13:21Tiered compilation
- 16:55Tiered compilation practice
- 19:50Where code compiles
- 22:23Understanding hotspots
- 24:12JVM tuning flags
- 26:03GraalVM intro
- 27:49GraalVM native image
- 29:34Graal compiler
- 33:07JEP 410 changes
- 35:17Java compilation recap
- 36:42Q&A
- 38:48Q&A
- 39:10Q&A
related talks
41mGraal: How to use the new JVM JIT compiler in real life
05mInterview with
38mGraal
54mDeveloper's Introduction to GraalVM
01h 00mStatic Java, GraalVM Native and OpenJDK
40mThe need for speed. What is GraalVM and how can it help you?
56mMaximizing Performance with GraalVM
11mJVM internals — bytecode, JIT, GC, speculative optimization
