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 três 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 ser concluídas em pouco tempo. Quando o coletor de lixo começa a coletar a geração mais antiga, é "muito" mais lento que em outros casos. Demorou mais tempo do que o previsto para pesquisas. Estou procurando como prever quando ele coletará a geração mais antiga e quanto tempo levará.
É fácil prever quando ele 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 programada.