Skip to content

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:+PrintFlagsFinal on 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 javap output; 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.

ExperienceStatus
Start hereA guided first lesson: what happens when you run a Java programAvailable
Explore the JVMThe six main parts, then the full map: overview, parts, inside views and walkthroughsAvailable
Class Loader ExplorerDelegation simulator and lifecycle walkthroughIn development · M3
Memory LabStep through stack and heap, reference by reference, with your own codeIn development · M4
Bytecode ExplorerVerified javap output with operand stack and localsIn development · M5
Garbage Collection LabBuild object graphs and run simulated collections, collector by collectorIn development · M6
Concurrency LabReorder two threads and watch lost updatesIn development · M7
Collections ExplorerHashMap buckets, collisions, treeification, resizingIn 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.

JVM Atlas

Explore the machine behind Java programs. A free, open-source atlas of the Java Virtual Machine. Specification baseline: Java SE 25. Implementation details: OpenJDK HotSpot, JDK 25.

MIT licensed · no accounts, no tracking, no backend · your progress stays in your browser.

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.