3.2 gc -- Interfaz con el recolector de basura

El módulo gc sólo está disponible si el intérprete fue compilado con el detector de basura cíclica opcional (la opción predeterminada). Si no se activó esta opción, salta una excepción ImportError si se intenta importar este módulo.

Este módulo proporciona una interfaz con el recolector de basura opcional. Proporciona la capacidad de desactivar el recolector, ajustar la frecuencia de recolección y establecer opciones de depuración. También proporciona acceso a objetos inaccesibles que ha encontrado el recolector, pero que es incapaz de liberar. Como el recolector suplementa el saldo de referencias ya utilizado en Python, se puede desactivar el recolector si se está seguro de no generar referencias cíclicas. La recolección automática se puede desactivar llamando a gc.disable(). Para depurar un programa que pierde memoria, se debe llamar a gc.set_debug(gc.DEBUG_LEAK).

El módulo gc proporciona las siguientes funciones:

enable ()
Activa la recolección de basura automática.

disable ()
Desactiva la recolección de basura automática.

isenabled ()
Devuelve verdadero si está activada la recolección automática.

collect ()
Arranca una recolección completa. Se examinan todas las generaciones y se devuelve el número de objetos inaccesibles que se encuentren.

set_debug (flags)
Establece los indicadores de depuración de recolección de basura. La información de depuración se presenta en sys.stderr.

Más tarde se enumeran las opciones de depuración que se pueden combinar mediante operaciones de bit para controlar la depuración.

get_debug ()
Devuelve las opciones de depuración activas en la actualidad.

set_threshold (threshold0[, threshold1[, threshold2]])
Establece los umbrales de recolección de basura (la frecuencia de recolección). Si se establece el valor de threshold0 a cero se desactiva la recolección.

El recolector clasifica los objetos en tres generaciones, dependiendo de cuántas pasadas de recolección han sobrevivido. Los nuevos objetos se colocan en la generación más joven (generación 0). Si un objeto sobrevive una recolección se muda a la siguiente generación (más vieja). Como la generación 2 es la más vieja, los objetos se quedan en ésta tras la recolección. Para decidir cuándo ejecutarse, l recolector lleva la cuenta de reservas y liberaciones de objetos desde la última recolección. Cuando el número de reservas menos el número de liberaciones excede threshold0, se arranca la recolección. Inicialmente, sólo se examina la generación 0. Si la generación 0 se ha examinado más de threshold1 veces desde que se examinara la generación 1, entonces se examina también la generación 0. Análogamente, threshold2 controla el número de recolecciones de la generación 1 que se deben realizar antes de recolectar la generación 2.

get_threshold ()
Devuelve los umbrales de recolección actuales como tupla (threshold0, threshold1, threshold2).

Se proporciona la siguiente variable para acceso en sólo lectura:

garbage
Una lista de objetos inaccesible encontrados por el recolector, pero que fue incapaz de recolectar. Los objetos que tienen métodos __del__() y forman parte de una referencia de ciclos provocan que el ciclo entero sea imposible de recolectar. Si se establece la opción DEBUG_SAVEALL, se añadirán a esta lista todos los objetos inaccesibles, en lugar de recolectarlos.

Se proporcionan las siguientes constantes para usarlas con set_debug():

DEBUG_STATS
Presenta estadísticas durante la recolección. Esta información puede resultar útil para afinar la frecuencia de recolección.

DEBUG_COLLECTABLE
Presenta información sobre los objetos recolectables.

DEBUG_UNCOLLECTABLE
Presenta información sobre los objetos no recolectables que se encuentren (objetos inaccesibles, pero que el recolector no puede liberar). Estos objetos se añadirán a la lista de basura garbage.

DEBUG_INSTANCES
Cuando están activas las opciones DEBUG_COLLECTABLE o DEBUG_UNCOLLECTABLE, presentar información acerca de las instancias de objetos que se encuentren.

DEBUG_OBJECTS
Si están activas las opciones DEBUG_COLLECTABLE o DEBUG_UNCOLLECTABLE, presentar información sobre objetos que no sean instancias de clases.

DEBUG_SAVEALL
Si está activa, todos los objetos inaccesibles que se encuentren se añadirán a garbage en lugar de liberarlos. Esto puede resultar útil para liberar un programa que pierda memoria.

DEBUG_LEAK
Las opciones de depuración necesarias para que el recolector presente información acerca de un programa que pierda memoria (equivale a DEBUG_COLLECTABLE | DEBUG_UNCOLLECTABLE | DEBUG_INSTANCES | DEBUG_OBJECTS | DEBUG_SAVEALL).

Ver Sobre este documento... para obtener información sobre sugerencias.