Garbage collection is an integral part of application behavior on Java platforms, yet it is often misunderstood. Developers have choices in selecting and tuning collector mechanisms as well as in application architecture. This session reviews and classifies various garbage collection techniques available in JVMs today. After a quick overview of common garbage collection techniques such as generational, parallel, stop-the-world, incremental, and concurrent algorithms, it defines terms and metrics common to all collectors. The presentation also classifies each major JVM collector’s mechanisms and discusses the trade-offs involved in balancing requirements for responsiveness, throughput, space, and available memory. Filmed at JavaOne 2014.