Estou procurando documentos que descrevam em detalhes como funciona a coleta de lixo python.
Estou interessado no que é feito em qual etapa. Quais objetos estão nessas 3 coleções? Que tipos de objetos são excluídos em cada etapa? Qual algoritmo é usado para encontrar ciclos de referência?
Antecedentes: Estou implementando algumas pesquisas que precisam terminar em pouco tempo. Quando o coletor de lixo começa a coletar a geração mais antiga, é "muito" mais lento do que em outros casos. Levou mais tempo do que o previsto para as pesquisas. Estou procurando como prever quando coletará a geração mais antiga e quanto tempo levará.
É fácil prever quando irá coletar a geração mais antiga com get_count()
e get_threshold()
. Isso também pode ser manipulado com set_threshold()
. Mas não vejo como é fácil decidir se é melhor fazer collect()
à força ou esperar pela coleta agendada.