JVM Architecture
The architecture and internals of the JVM, or realistically the architecture of Oracle/Hotspot (with a few references to Azul). The other JVMs sometimes make different architectural choices. There's less material about them out there, at least in the places I'm familiar with.
I've also compiled some notes on type erasure, the red meat of JVM architecture discussions.
What follows is rather scattered. I'd love a set of overviews at varying levels. The first few chapters of Scott Oak's Java Performance have some very readable material on the JIT and Garbage Collection, but the book isn't focused on architecture. The https://docs.oracle.com/javase/specs[spec]] is also valuable, but it takes a special sort of person to readspec straight through, and it won't tell you anything about implementation.
JVM Internals
Java 7 era introduction to the architecture of the JVM. A mixture of things mandated by the spec and common implementation strategies like JIT compilation. Covers quite a few things, but not in depth, and I'm not sure whether it's clear enough for beginners. Permgen is one thing that I know is outdated, and the description of garbage collection only applies to stop the world collectors.
A JVM Does What?
Cliff Click discusses several things that we'd want either the kernel or the JVM to provide (there are several different similar talks he's given on youtube that are worth watching, including his 2016 VMLS talk).
- OS support for monotonic time, for instance.
- OS thread priorities (says Azul fakes this)
- JVM support for fixnums
- Application support for resource reclamation
Additionally, he claims bytecodes are slow and a poor way to describe program semantics, compared to alternate machine independent descriptions.
Java Anatomy Park
Mini-posts on JVM architecture by Aleksey Shipilëv.
Safepoints
Nitsan Wakart introduces the concept of a safepoint and plunges into experiments/benchmarks surrounding how safepoints work.
Safepoints in JVM
How the JVM uses SIGSEGV
to let threads poll for
safepoints.
Runtime Overview
Not sure how old this is, perhaps mid-late 2000s? Dry, but contains information about the runtime startupt that I hadn't seen elsewhere.
Java’s Mysterious Interrupt
Heap
With GC Solved, What Else Makes a JVM Pause?
Understanding How Graal Works - a Java JIT Compiler Written in Java
Douglas Hawkins — Understanding the Tricks Behind the JIT - YouTube
Unwatched.
Exotic | A Bestiary of Classes Implementing Exotic Semantics in Java
A bestiary of classes implementing exotic semantics in Java
JavaOne 2016: HotSpot Under the Hood - AlBlue’s Blog
Brian Goetz on Generic Specialization
Inside the Java Virtual Machine
This dates to the Java 2 days. Could be relevant for history's sake.
Value Type Hygiene
Proposal for handling the specification of value types in classfiles in a backwards compatible way. (May 2018).
Sources
Mechanical Sympathy mailing list
Nitsan Wakart
Richard Warburton
Aleksey Shipilëv
Mike Hearn
Jackson Davis
Cliff Click
pron on Hacker News
JEPs
Java enhancement proposals, both changes to the Java language and to the VM.