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:
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.
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
.
(threshold0, threshold1, threshold2)
.
Se proporciona la siguiente variable para acceso en sólo lectura:
Se proporcionan las siguientes constantes para usarlas con set_debug():
garbage
.
DEBUG_COLLECTABLE |
DEBUG_UNCOLLECTABLE | DEBUG_INSTANCES | DEBUG_OBJECTS | DEBUG_SAVEALL
).