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).

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.