Algorytm mark-compact – rodzaj algorytmu odśmiecania pamięci używany do odzyskiwania niedostępnej pamięci. Algorytmy rodzaju mark-compact mogą być traktowane jako połączenie algorytmu mark-sweep i algorytmu kopiowania Cheneya. Na początku oznakowane są dostępne obiekty a następnie faza kompaktowania przenosi osiągalne (oznaczone) obiekty w kierunku początku obszaru sterty. Kompaktujące odśmiecanie pamięci jest wykorzystywane przez Common Language Runtime firmy Microsoft i Glasgow Haskell Compiler.
Algorytmy Po zaznaczeniu żywych obiektów w stercie w taki sam sposób jak w algorytmie mark-sweep sterta często będzie pofragmentowana. Celem algorytmów mark-compact jest przesunięcie żywych obiektów w pamięci tak by wyeliminować fragmentację. Wyzwaniem jest poprawnie zaktualizować wszystkie wskaźniki do przemieszczonych obiektów, z których większość będzie miała nowe adresy pamięci po kompaktowaniu. Kwestia obsługi aktualizacji wskaźnika jest traktowana w różny sposób.
Kompaktowanie oparte na tabeli Algorytm oparty na tabeli po raz pierwszy został opisany przez Haddona i Waite w 1967 roku. Zachowuje względne rozmieszczenie żywych obiektów w stercie, a wymaga jedynie stałej wielkości nadwyżki.