Mark and Sweep jest kolejną metodą odśmiecania. W niej, z każdym dynamicznie zaalokowanym obiektem związany jest tzw. określający czy dany obiekt jest jeszcze używany (markbit ustawiony na 1), czy też jest już niepotrzebny (ustawiony na 0). W metodzie tej pamięć nie jest odzyskiwana bezpośrednio po stwierdzeniu, że obiekt jest już niepotrzebny, lecz dopiero w momencie przekroczenia pewnego progu wykorzystania pamięci. Działanie programu jest wtedy zatrzymywane i uruchamiana jest faza odśmiecania.
Faza odśmiecania dzieli się na dwa etapy: Mark – w której program GC identyfikuje wszystkie obiekty, które są jeszcze wykorzystywane i ustawia ich markbity na 1; Sweep – w której program GC usuwa nieużywane obiekty (te, których markbit był ustawiony na 0) oraz resetuje markbit obiektów pozostawionych.
Zaletą tej metody jest fakt, że w przeciwieństwie do zliczania referencji, nie istnieje problem cyklicznych zależności.
Wadą jest natomiast to, że potrzebne jest wstrzymanie działania programu podczas fazy GC. Sprawia to, że metoda ta jest mało przydatna w systemach czasu rzeczywistego. Prowadzi ona także do fragmentacji pamięci.