Escape analysis определяет, может ли значение оставаться в стеке или его нужно разместить в куче. Это влияет на число аллокаций и нагрузку на сборщик мусора.
Что такое escape analysis в Go и почему он важен для оптимизации производительности?
Escape analysis определяет, может ли значение оставаться в стеке или его нужно разместить в куче. Это влияет на число аллокаций и нагрузку на сборщик мусора.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Escape analysis определяет, может ли значение оставаться в стеке или его нужно разместить в куче. Это влияет на число аллокаций и нагрузку на сборщик мусора.
Компилятор отслеживает, где используются ссылки и переживают ли они подходящую область жизни. Само наличие указателя не означает обязательную heap allocation; результат зависит от контекста, inlining и версии компилятора.
Для диагностики используют сообщения компилятора, например go build -gcflags=-m, и профили аллокаций. Оптимизировать стоит измеренные горячие места: переписывание кода ради предполагаемого стека может ухудшить читаемость без заметной пользы.
Источник: go.dev.