# Garbage Collector C#

**URL:** <https://forum.itvdn.com/t/garbage-collector-c/2896>\
**Category:** C#\
**Created:** [02.12.2018 14:45:10 UTC](https://forum.itvdn.com/t/garbage-collector-c/2896 "2018-12-02T14:45:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![realvovan99](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/r/aeb1de/32.png) [@realvovan99](https://forum.itvdn.com/u/realvovan99)\
**Post date:** [02.12.2018 14:45:10 UTC](https://forum.itvdn.com/t/garbage-collector-c/2896/1 "2018-12-02T14:45:10Z")

</div>

Здравствуйте! Очень интересует тема сборки мусора.  
Опишите пожалуйста работу сборщика мусора, как происходит сам процесс сборки, по какому сценарию GC собирает ресурсы и как это всё происходит в целом?

---

<div class="post-metadata">

**Author:** ![denisnifedov](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/d/9d8465/32.png) [@denisnifedov](https://forum.itvdn.com/u/denisnifedov)\
**Post date:** [02.12.2018 14:58:25 UTC](https://forum.itvdn.com/t/garbage-collector-c/2896/2 "2018-12-02T14:58:25Z")

</div>

GC (Garbage Collection — сборка мусора) — высокоуровневая абстракция, которая избавляет разработчиков от необходимости заботиться об освобождении управляемой памяти.  
Во время процесса сборки мусора исполняющая среда будет исследовать объекты в куче, чтобы определить, являются ли они по-прежнему достижимыми (т. е. корневыми) для приложения. Для этого среда CLR будет создавать графы объектов, представляющие все достижимые для приложения объекты. Кроме того, следует иметь в виду, что сборщик мусора никогда не будет создавать граф для одного и того же объекта дважды, избавляя от необходимости выполнения подсчета циклических ссылок, который характерен для программирования в среде COM.  
Фазы сборки мусора:

1. Маркировка (mark phase).
2. Чистка (sweep phase).
3. Сжатие (compact phase).  
Поколения объектов:
4. Нулевое
5. Первое
6. Второе  
Краткий принцип работы сборщика мусора:  
"Работает приложение, не хватает памяти для того, чтобы выделить следующий объект, и происходит запуск GC. При этом все активные потоки приложения приостанавливаются. Это самый простой процесс сборки мусора — workstation non-concurrent mode."

источник: [https://dou.ua/lenta/articles/principles-of-garbage-collection/](https://dou.ua/lenta/articles/principles-of-garbage-collection/)
