About
Don't memorize the JVM. Explore it.
JVM Atlas is an open-source, interactive atlas of the Java Virtual Machine. It is built for people who want an accurate mental model of how Java actually runs, from absolute beginners to engineers preparing for JVM interviews.
Why it exists
Most explanations of the JVM are a rectangle with six smaller rectangles inside. That picture hides what matters: how the parts depend on each other, which parts the specification requires and which are one implementation's choices, and what actually happens when a line of Java runs.
JVM Atlas starts with a question a beginner already has, follows one small program through the machine, and then lets you take the machine apart. Every part is selectable, connected and dissected, explained simply and in depth (with a developer level for the core concepts and the first lesson), and every walkthrough uses real output from a real JDK.
Versions
- Specification baseline: Java SE 25 (Java Virtual Machine Specification and Java Language Specification).
- Implementation details: OpenJDK HotSpot, JDK 25, checked against the OpenJDK source tag
jdk-25-ga. - Verified examples: compiled and run with OpenJDK 25.0.4 on Linux x64 (4 CPUs). Flag defaults come from
-XX:+PrintFlagsFinalon that machine; some are chosen ergonomically and differ on yours.
Accuracy policy
- Specification concepts and HotSpot implementation structures are always distinguished (solid versus dashed outlines, and labels).
- Bytecode is real
javapoutput; it is never written by hand. - Every diagram, dissection and walkthrough carries a visible accuracy note saying what it simplifies.
- Simulations and walkthroughs are educational models of JVM behaviour, not the JVM itself, and say so.
- Technically important claims cite primary sources: see the references.
Found an error? Please open an issue with a source. Corrections are the most valuable contribution.
Project status
JVM Atlas is built one milestone at a time, and only finished experiences are linked from the site. This is where things stand.
| Experience | What you do | Status |
|---|---|---|
| Start hereA guided first lesson: what happens when you run a Java program | A guided first lesson: what happens when you run a Java program | Available |
| Explore the JVMThe six main parts, then the full map: overview, parts, inside views and walkthroughs | The six main parts, then the full map: overview, parts, inside views and walkthroughs | Available |
| Class Loader ExplorerDelegation simulator and lifecycle walkthrough | Delegation simulator and lifecycle walkthrough | In development · M3 |
| Memory LabStep through stack and heap, reference by reference, with your own code | Step through stack and heap, reference by reference, with your own code | In development · M4 |
| Bytecode ExplorerVerified javap output with operand stack and locals | Verified javap output with operand stack and locals | In development · M5 |
| Garbage Collection LabBuild object graphs and run simulated collections, collector by collector | Build object graphs and run simulated collections, collector by collector | In development · M6 |
| Concurrency LabReorder two threads and watch lost updates | Reorder two threads and watch lost updates | In development · M7 |
| Collections ExplorerHashMap buckets, collisions, treeification, resizing | HashMap buckets, collisions, treeification, resizing | In development · M7 |
The source code, the plan and every change are public in the repository on GitHub.
Privacy and hosting
The site is static files on GitHub Pages: no backend, no accounts, no analytics, no cookies, no third-party requests. Progress, bookmarks and preferences live in your browser's localStorage and never leave your device. You can clear them from the learning preferences menu in the header.
Open source
The code and content are MIT licensed. Fonts (Inter, JetBrains Mono, Source Serif 4) are bundled under the SIL Open Font License. Third-party licenses are listed in THIRD_PARTY_NOTICES.md in the repository.JVM Atlas is an independent educational project and is not affiliated with or endorsed by Oracle. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. JVM Atlas is not part of the OpenJDK project.