This talk is meant to demystify how garbage collection (GC) works in a Java runtime. The beginning of the talk will be focused on what GC is, discuss truths and myths, and how it is useful for the lifetime of a program. After laying out the basics I’ll explain how each GC algorithm work and how they can be implemented in a real world JVM (e.g. OpenJ9, Hotspot). How are these algorithms put together to make up a good GC configuration, and how one can better select a configuration/policy for their application? These are some of the questions that I will be addressing during this talk.