Middle
22
0
questionbank

Каковы ваши знания о сборщике мусора в языке Go?

Ответ от нейросети sobes.tech

Golang использует параллельный и сборщик мусора с низкой задержкой на основе марк-свип алгоритма.

Основные характеристики:

  1. Триколор-алгоритм (Three-color algorithm): Помечает объекты тремя цветами: белым (потенциальный мусор), серым (объект достижим, но его потомки не проинспектированы) и чёрным (объект и его потомки достижимы).
  2. Параллельность (Parallel): Работает параллельно с пользовательскими горутинами на нескольких ядрах, минимизируя время остановки.
  3. Конкурентность (Concurrent): Большая часть работы GC выполняется одновременно с выполнением программы.
  4. Минимизация стоп-ворлд времени (Low-latency Stop-The-World): Время остановки всех горутин (STW) крайне короткое, используется только для фазы "начало маркировки" (start of marking) и "завершение маркировки" (end of marking), чтобы обеспечить согласованность графа объектов.
  5. Переиспользуемые сканы (Stack scanning): Сканирование стеков также выполняется параллельно и конкурентно с STW.
  6. Целевой уровень заполнения хипа (Heap growth target): GC стремится поддерживать определённый процент заполнения хипа после каждого цикла, чтобы избегать слишком частых или слишком редких циклов. Этот порог можно контролировать через переменную GOGC. По умолчанию GOGC=100, что означает, что GC запускается, когда размер хип

Golang использует параллельный и сборщик мусора с низкой задержкой на основе марк-свип алгоритма.

Основные характеристики:

  1. Триколор-алгоритм (Three-color algorithm): Помечает объекты тремя цветами: белым (потенциальный мусор), серым (объект достижим, но его потомки не проинспектированы) и чёрным (объект и его потомки достижимы).
  2. Параллельность (Parallel): Работает параллельно с пользовательскими горутинами на нескольких ядрах, минимизируя время остановки.
  3. Конкурентность (Concurrent): Большая часть работы GC выполняется одновременно с выполнением программы.
  4. Минимизация стоп-ворлд времени (Low-latency Stop-The-World): Время остановки всех горутин (STW) крайне короткое, используется только для фазы "начало маркировки" (start of marking) и "завершение маркировки" (end of marking), чтобы обеспечить согласованность графа объектов.
  5. Переиспользуемые сканы (Stack scanning): Сканирование стеков также выполняется параллельно и конкурентно с STW.
  6. Целевой уровень заполнения хипа (Heap growth target): GC стремится поддерживать определённый процент заполнения хипа после каждого цикла, чтобы избегать слишком частых или слишком редких циклов. Этот порог можно контролировать через переменную GOGC. По умолчанию GOGC=100, что означает, что GC запускается, когда размер хип

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

garbage-collectionmemory-managementruntimeconcurrencyperformance-tuning