Every Java & the JVM visualization on this site on one map. The branches are the main ideas. Each leaf is a page; the grey line under it is the one thing to remember about it. Click a branch to focus on it, click a page to open it.
Follow a Java program through its life, and each branch is one stage:
| Branch | When | Key idea | Typical problem |
|---|---|---|---|
| From source to bytecode | build time | portable bytecode | compile errors |
| Startup and class loading | start, first use of a class | parent delegation | slow start, ClassNotFoundException |
| JIT compilers | after code gets hot | profile, then optimise | deoptimisation, warm-up |
| Memory and GC | all the time | reachability from roots | pauses, OutOfMemoryError |
| Collections | each call | hashing, sorted tree | bad hashCode, resize cost |
| Threads and memory model | each thread | happens-before | stale values, pinning |
| Spring framework | context start, each call | inversion of control | self-call skips the proxy |
java.lang classes always come from the bootstrap loader.volatile or synchronized, one thread may never see another thread's write.See all Java & the JVM pages in the index, or the other mind maps.