gc — controle do coletor de lixo

Este módulo fornece uma interface para o coletor de lixo da heap: habilitar ou desabilitar a coleta automática, forçar uma coleta imediata, consultar a quantidade de memória de heap alocada e livre, e ajustar o limiar de alocação que dispara a coleta.

Funções

gc.enable() None

Habilita a coleta de lixo automática.

gc.disable() None

Desabilita a coleta de lixo automática. A memória de heap ainda pode ser alocada, e a coleta de lixo ainda pode ser iniciada manualmente usando gc.collect().

gc.collect() None

Executa uma coleta de lixo.

gc.mem_alloc() int

Retorna o número de bytes de RAM da heap que estão alocados por código Python.

Diferença em relação ao CPython

Esta função é uma extensão do MicroPython.

gc.mem_free() int

Retorna o número de bytes de RAM da heap que estão disponíveis para o código Python alocar, ou -1 se essa quantidade não for conhecida.

Diferença em relação ao CPython

Esta função é uma extensão do MicroPython.

gc.threshold(amount: int | None = None) int | None

Define ou consulta o limiar adicional de alocação do GC. Normalmente, uma coleta é disparada apenas quando uma nova alocação não pode ser satisfeita, isto é, em uma condição de falta de memória (OOM). Se esta função for chamada, além de em OOM, uma coleta será disparada toda vez após amount bytes terem sido alocados (no total, desde a vez anterior em que tal quantidade de bytes foi alocada). amount normalmente é especificado como menor que o tamanho total da heap, com a intenção de disparar uma coleta antes de a heap se esgotar, e na esperança de que uma coleta antecipada evite fragmentação excessiva de memória. Esta é uma medida heurística, cujo efeito variará de aplicação para aplicação, assim como o valor ótimo do parâmetro amount.

Chamar a função sem argumento retornará o valor atual do limiar. Um valor de -1 significa que o limiar de alocação está desabilitado.

Diferença em relação ao CPython

Esta função é uma extensão do MicroPython. O CPython tem uma função semelhante – set_threshold(), mas, devido a implementações de GC diferentes, sua assinatura e semântica são diferentes.