A Journey - On Tour with Java Code on It’s Way Through the JVM
summary
Java source compiles with JavaC into bytecode class files, then the JVM class loader chain (bootstrap → platform → system → optional custom) brings classes into memory; JVM startup opens ~1,200 classes and creates interpreter templates (measured ~0.4 ms). Execution tiers run interpreter → C1 (~10× faster at ~1,000 invocations) → C2 (~2× faster than C1 after ~5,000 invocations) with profile-driven inlining and possible deoptimization. Memory uses per-thread stacks, a shared heap with tracing/freeing/compaction and GC choices: G1 default, ZGC/Shenandoah ~10–15 ms pauses, Epsilon no GC.
AI-written summary · about
chapters (12)
- 0:00Introduction to the JVM
- 1:07Bytecode and class structure
- 3:24Class loader subsystem
- 7:15Linking and initialization
- 8:49Memory management basics
- 11:11Garbage collection mechanics
- 13:35Generational garbage collection
- 16:43Choosing a garbage collector
- 18:28The execution engine
- 23:00Tiered compilation overview
- 28:33Optimizations and deoptimization
- 34:21Summary and conclusion
related talks
49mAn Introduction to JVM Performance
19mThe JVM : From Compilation to Execution
43mThe Virtual Machine Under the Hood
35mJava at Speed: Building a Better JVM
01h 09mFrom Bytecode to Native Code in HotSpot JVM
01h 01mAn Introduction to JVM Performance
44mJava at Speed: Building a Better JVM.
48mA journey to JVM Excellence: Navigating JDKs and JVMs
