gc — controlo do coletor de lixo¶
Este módulo fornece uma interface para o coletor de lixo do heap: ativar ou desativar a recolha automática, forçar uma recolha imediata, consultar a quantidade de memória heap alocada e disponível, e ajustar o limiar de alocação que desencadeia a recolha.
Funções¶
- gc.disable() None¶
Desativa a recolha automática de lixo. A memória heap pode continuar a ser alocada e a recolha de lixo pode ainda ser iniciada manualmente utilizando
gc.collect().
- gc.mem_alloc() int¶
Devolve o número de bytes de RAM do heap que estão alocados pelo código Python.
Diferença relativamente ao CPython
Esta função é uma extensão do MicroPython.
- gc.mem_free() int¶
Devolve o número de bytes de RAM do heap disponíveis para o código Python alocar, ou -1 se esse valor não for conhecido.
Diferença relativamente ao CPython
Esta função é uma extensão do MicroPython.
- gc.threshold(amount: int | None = None) int | None¶
Define ou consulta o limiar de alocação adicional do GC. Normalmente, uma recolha é desencadeada apenas quando uma nova alocação não pode ser satisfeita, ou seja, numa condição de falta de memória (OOM). Se esta função for chamada, para além de OOM, uma recolha será desencadeada cada vez que amount bytes tiverem sido alocados (no total, desde a última vez que essa quantidade de bytes foi alocada). amount é normalmente especificado como menor do que o tamanho total do heap, com a intenção de desencadear uma recolha antes do heap ficar esgotado, na esperança de que uma recolha antecipada evite fragmentação excessiva de memória. Esta é uma medida heurística, cujo efeito variará de aplicação para aplicação, bem como o valor ótimo do parâmetro amount.
Chamar a função sem argumento devolve o valor atual do limiar. Um valor de -1 significa que o limiar de alocação está desativado.
Diferença relativamente 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, a sua assinatura e semântica são distintas.