Карточка Middle Память, GC и pprof обновлено

Как снизить нагрузку на GC

Вопрос

Назовите приёмы снижения аллокаций и нагрузки на GC.

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Предвыделять слайсы и мапы (make с ёмкостью), переиспользовать буферы (sync.Pool), избегать лишних конвертаций string/[]byte, strconv вместо fmt, значения вместо указателей в маленьких структурах, меньше указателей в больших структурах, не держать большие массивы через маленькие подслайсы.

Ответ

Предвыделять слайсы и мапы (make с ёмкостью), переиспользовать буферы (sync.Pool), избегать лишних конвертаций string/[]byte, strconv вместо fmt, значения вместо указателей в маленьких структурах, меньше указателей в больших структурах, не держать большие массивы через маленькие подслайсы.

Разбор

Сначала замер: -benchmem, heap-профиль alloc_space, GODEBUG=gctrace=1.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.