El recolector de basura en Python, también conocido como Garbage Collector (GC), es un proceso automático que se encarga de liberar memoria que ya no está en uso por el programa.
Python utiliza un sistema de conteo de referencias, donde cada objeto tiene un contador que se incrementa cada vez que se hace referencia al objeto y se decrementa cada vez que se elimina una referencia. Cuando el contador de referencias de un objeto llega a cero, indica que el objeto ya no es necesario y se puede eliminar, liberando la memoria que estaba ocupando.
Sin embargo, el conteo de referencias no puede manejar las referencias cíclicas (por ejemplo, cuando dos objetos se refieren mutuamente y ninguna otra parte del código los referencia). Es aquí donde interviene el recolector de basura.
El GC de Python se ejecuta periódicamente y verifica todos los objetos del programa para detectar ciclos de referencia. Cuando encuentra un ciclo de referencia, el GC determina si los objetos en el ciclo son accesibles desde otras partes del programa. Si no lo son, entonces todo el ciclo es inaccesible y el GC puede recogerlo como basura, liberando la memoria.
Es importante mencionar que el recolector de basura en Python puede suponer un costo computacional, por lo tanto, también existe la posibilidad de controlarlo manualmente utilizando las funciones gc.enable(), gc.disable() y gc.collect() del módulo gc.