Короткий ответ Сборка мусора — автоматический процесс управления памятью: JVM сама находит объекты в куче, до которых нельзя добраться по цепочке ссылок от корневых точек (корней), и освобождает их память. Программисту не нужно вручную удалять объекты, как через free или delete в C/C++. Как это работает подробнее Базовый алгоритм — mark-and-sweep: на первом шаге GC обходит граф объектов от корней и помечает достижимые, на втором удаляет непомеченные. В современных HotSpot JVM куча разделена на поколения: молодые объекты «умирают» быстро, для них применяется копирующая сборка с частыми небольшими паузами, а выжившие со временем переходят в старое поколение, где работают другие алгоритмы. Корни (GC roots) — локальные переменные активных потоков, статические поля и другие точки входа в граф объектов. Достижимость — объект жив, пока до него можно добраться от корней; недостижимые объекты удаляются. Поколения — young и old generation: для молодых объектов частая копирующая сборка, для старых — отдельные стратегии.