JVM garbage collection
- Uniprocessor Garbage Collection Techniques is a good introduction to some core theoretical concepts. This is the paper I read many many years ago and originally helped me become interested in garbage collection.
- A Generational Mostly-concurrent Garbage Collector is what I think of as "the CMS" paper. It describes the CMS (concurrent mark/sweep) collector in HotSpot. For many ears this was the best option for trying to achieve low latency. It's a non-copying non-compacting old generation collector.
- Garbage-First Garbage Collection is "the G1" paper. G1 is a newer garbage collector than CMS. This time, it is responsible for both the young generation and the old generation and it's a copying and compacting collector.
- Azul collectors (these apply to Azul's JVM which AFAIK has never
been freely available).
- The Pauseless GC Algorithm describes the theory behing the C4 garbage collector used in the Azul JVMs.
- C4: The Continuously Concurrent Compacting Collector is a follow-up paper on the previous one, going into a lot more implementation detail.
- Current (2018) "state of the art" with respect to GC in freely available HotSpot are zgc and shenandoah.
Relatedly, you may be interested in scode/lrugctest which is designed to stress a garbage collector using a very simple simulation of a worst-case (for the GC) LRU cache. As of mid 2018, zgc and shenandoah are the only freely available HotSpot GCs that are capable of low (< 10 ms) pause times under that workload.