Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: heap, gc, allocation, latency

Как работает GC в Go на высоком уровне и какие типы кода сильнее всего на него влияют?

Проверяет понимание влияния аллокаций и “мусора” на производительность сервиса.

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

GC в Go автоматически очищает память, когда объектов на куче становится много. Чем больше вы создаёте временных объектов, тем чаще и дольше будет работать GC. Больше всего на GC влияют частые аллокации, большие срезы, строки и создание новых структур в горячих участках.

Длинный ответ

Go использует сборщик мусора (GC), чтобы освобождать память объектов, которые больше недостижимы. На высоком уровне:

  • программа выделяет объекты (часть уходит в heap),

  • GC периодически отмечает “живые” объекты,

  • недостижимые — освобождаются.

GC влияет на:

  • latency (паузы и дополнительная работа),

  • CPU (часть времени уходит на сборку).

Что сильнее всего увеличивает нагрузку на GC:

  1. Частые аллокации в горячих циклах

    Например, создание новых []byte/map/struct на каждый запрос.

  2. Конкатенация строк в цикле

    Часто создаёт новые строки и временные буферы.

  3. json.Marshal/Unmarshal на больших структурах

    Генерирует много временных объектов.

  4. Большие временные срезы

    Даже если быстро освобождаются, GC должен их “заметить” и убрать.

Как уменьшать влияние:

  • переиспользовать буферы (sync.Pool) для []byte (с осторожностью),

  • избегать лишних fmt.Sprintf в горячем коде,

  • уменьшать количество временных структур,

  • использовать билдеры (strings.Builder) для строк.

Вывод: чем меньше лишних аллокаций, тем ниже давление на GC и стабильнее latency под нагрузкой.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#heap

#gc

#allocation

#latency

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.