Что является триггером сборки мусора в .NET и какие этапы она включает?

GC запускается при превышении бюджета выделений, нехватке памяти или явном GC.Collect(). Он находит достижимые объекты, освобождает недостижимые и при необходимости уплотняет память.

Короткий ответ

Что ответить на собеседовании

GC запускается при превышении бюджета выделений, нехватке памяти или явном GC.Collect(). Он находит достижимые объекты, освобождает недостижимые и при необходимости уплотняет память.

Подробный разбор

Ответ с пояснениями

GC запускается при превышении бюджета выделений, нехватке памяти или явном GC.Collect(). Он находит достижимые объекты, освобождает недостижимые и при необходимости уплотняет память.

Основные этапы: обход корней и маркировка живых объектов, определение нового размещения и исправление ссылок, освобождение памяти и перемещение выживших объектов при уплотнении.

Сборка выбранного поколения включает младшие поколения. Не каждая сборка затрагивает всю кучу и не каждый сегмент обязательно уплотняется. Финализаторы выполняются отдельно; наличие финализатора может задержать освобождение объекта. GC.Collect обычно не нужен в прикладной логике: частые принудительные сборки могут ухудшить производительность.

Источник: learn.microsoft.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее