Es cuando el ambiente de ejecución es responsable de determinar cuándo cierto objeto de memoria ya no es utilizado por el programa pero podría ser reutilizado en alguna otra parte.
Lisp fue el primer lenguaje que utilizo esta técnica.
Gracias a la atención que generó Java, hoy en día casi todos los lenguajes considerados “modernos” tienen incorporados esta utilidad de la recolección de basura.