La gestión de memoria en Python opera mediante dos estrategias principales de asignación: pymalloc para objetos pequeños (hasta 512 bytes) y malloc para los grandes. pymalloc gestiona la memoria a través de arenas divididas en pools y bloques, optimizando el uso sin solicitar al sistema operativo (OS) cada asignación, aunque esto impide la reducción de memoria en el proceso. Por el contrario, malloc delega la gestión en la biblioteca C del sistema, manteniendo la memoria reservada para reutilización hasta que los bloques son muy grandes. La liberación de memoria se realiza mediante el conteo de referencias y el recolector de basura. El conteo de referencias destruye objetos cuando su contador llega a cero, pero no resuelve las referencias circulares. El recolector de basura, que opera en generaciones (gen0, gen1, gen2), detecta objetos inalcanzables y los libera, permitiendo una gestión más robusta de la memoria en aplicaciones complejas.
