Кисель в Айти | Python разработка
27.02
Вопрос: Как работает Garbage Collector в Python?
Это прям классика, встречается почти каждый раз. Если перечислите три основных механизма - уже будет достаточно :)
Ответ:
Здесь стоит выделить три ключевых механизма: 1. Подсчёт ссылок. Когда счётчик ссылок на объект падает до нуля, он удаляется.
2. Разрешение циклических ссылок. Если два объекта ссылаются друг на друга, их счётчик не упадёт до 0. Здесь нам понадобится альтернативный способ. Для разрыва циклов осуществляется обход всех объектов от "корня". Все объекты, которые не были найдены при таком обходе считаются "недостижимыми". Это и есть наши циклы и GC их удаляет.
3. Деление объектов на поколения. Для оптимизации работы GC существует механизм "поколений". Новые объекты стартуют с generation 0. А после нескольких сборок мусора перемещаются в следующее поколение. Более старшие поколения проверяются реже, что экономит ресурсы.
#собесыеще контент в этом сообществе
еще контент в этом соообществе
Кисель в Айти | Python разработка
27.02
войдите, чтобы увидеть
и подписаться на интересных профи