Я ищу документы, в которых подробно описывается, как работает сборка мусора Python.
Мне интересно, что делается на каком этапе. Какие объекты входят в эти 3 коллекции? Какие объекты удаляются на каждом шаге? Какой алгоритм используется для поиска эталонных циклов?
Предыстория: я реализую некоторые поиски, которые должны завершиться за небольшое время. Когда сборщик мусора начинает собирать самое старое поколение, он "намного" медленнее чем в других случаях. Это заняло больше времени, чем положено для поиска. Я смотрю, как предсказать, когда он соберет самое старое поколение и сколько времени это займет.
Легко предсказать, когда он будет собирать самое старое поколение с помощью get_count()
и get_threshold()
. Этим также можно управлять с помощью set_threshold()
. Но я не понимаю, насколько легко решить, что лучше сделать collect()
принудительно или дождаться запланированного сбора.