Сборщик мусора должен сканировать все объекты и вызовы (стек выполнения), чтобы идентифицировать все «живые» адреса в исполняемой программе, а затем «собирать» объекты, которые не имеют «живых» адресов. В некоторых средах алгоритм GC может быть ТОЧНЫМ и точно знать, что является адресом объекта, а что нет. В других средах он должен сканировать части хранилища (прежде всего, стек выполнения), где есть слова хранилища, которые МОГУТ быть адресом объекта, и делать КОНСЕРВАТИВНОЕ предположение, что если он выглядит как действительный адрес, и существует объект, который имеет это адрес, то объект не должен быть собран.
Преимущества консервативного сбора данных заключаются в том, что генератор кода (если не интерпретируется) свободнее распределяет переменные там, где и когда они им нужны, и ему не нужно тщательно следить за указателями объектов. (Необходимость отслеживать расположение указателей объектов может привести к менее оптимизированному коду, в дополнение к тому, что генератор кода становится значительно более сложным. Кроме того, консервативный сборщик имеет некоторые разумные шансы на использование с компилятором, который никогда не предназначался для поддержки сборщик мусора, в то время как точный сборщик потребует радикального изменения компилятора.)
Основным недостатком консервативного подхода является невозможность реализации полного «копирующего» коллектора. Когда копирование завершено, указатели на скопированные объекты должны быть обновлены, и если неясно, является ли данное значение бита указателем объекта или просто числовым значением, невозможно точно определить, следует ли его изменять, когда объект скопировано. Есть также недостаток, заключающийся в том, что некоторые «мертвые» объекты могут не собираться из-за случайных битовых комбинаций, которые выглядят как их адреса, хотя на практике это не представляет серьезной проблемы.