Выбор ответа Junior Память, GC и pprof обновлено
Как посмотреть решения escape analysis
Вопрос
Как узнать, какие переменные компилятор перенёс в кучу?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: go build -gcflags=-m. Флаг -m у компилятора печатает решения об инлайнинге и побеге (escapes to heap, moved to heap), -m -m подробнее. go vet такого режима не имеет. gctrace=1 печатает статистику циклов GC. pprof heap показывает реальные аллокации во время…
Варианты ответа
go build -gcflags=-mправильный ответgo vet -escapeGODEBUG=gctrace=1go tool pprof heap
Разбор
Флаг -m у компилятора печатает решения об инлайнинге и побеге (escapes to heap, moved to heap), -m -m подробнее. go vet такого режима не имеет. gctrace=1 печатает статистику циклов GC. pprof heap показывает реальные аллокации во время работы, но не объясняет, почему значение убежало.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память, GC и pprof»
- Пул объектов как sync.Pool: симуляция на Go
- Статистика потока чисел без хранения на Go
- Escape analysis: что попадёт в кучу
- Как работает сборщик мусора Go
- GOMEMLIMIT в контейнере
- inuse_space и alloc_space в pprof
- Почему fmt.Println вызывает аллокации
- Инструменты диагностики Go