Six parts that build Java's garbage collectors from the ground up: what counts as garbage, how tracing reclaims it, why the heap is split into generations, how marking runs alongside your program, and how G1 and ZGC keep pauses short.