Збір сміття починається з деякого "корінного" набору місць, які завжди вважаються "доступними", таких як регістри процесора, стек та глобальні змінні. Він працює, знаходячи будь-які покажчики в цих областях і рекурсивно знаходячи все, на що вони вказують. Як тільки це все знайдено, все інше - сміття.
Звичайно, існує досить багато варіацій, переважно заради швидкості. Наприклад, більшість сучасних збирачів сміття є "поколіннями", це означає, що вони ділять предмети на покоління, і коли предмет старіє, збирач сміття проходить все довше і довше між тим, як він намагається з'ясувати, чи є цей об'єкт дійсним чи ні - він просто починає припускати, що якщо він прожив довгий час, шанси досить хороші, що він продовжить жити ще довше.
Тим не менш, основна ідея залишається тією ж: все засноване на тому, щоб почати з деякого кореневого набору речей, які він сприймає як належне, можна все-таки використовувати, а потім переслідувати всі вказівники, щоб знайти, що ще може бути використане.
Цікавий бік: можуть люди часто дивуються ступеня схожості між цією частиною сміттєзбірника та кодом для об'єктів, що займаються маршируванням, для таких речей, як виклики віддалених процедур. У кожному конкретному випадку ви починаєте з деякого кореневого набору об’єктів і гонитесь за вказівниками, щоб знайти всі інші об'єкти, на які посилається ...