Ответ
Да, работал. В Go куча (heap) используется для хранения объектов, на которые ссылаются указатели или если их размер неизвестен на этапе компиляции. Объекты в куче управляются сборщиком мусора (GC).
Пример с аллокацией в куче:
func createHeapObject() *int {
x := 42 // x escapes to heap
return &x
}
В этом случае x будет размещен в куче, так как его ссылка возвращается из функции. Можно анализировать escape-анализу с помощью go build -gcflags="-m".
Для ручной работы с кучей (например, при оптимизации) можно использовать:
runtime.ReadMemStatsдля мониторинга- Профилирование с
pprofдля анализа аллокаций - Пулы объектов (
sync.Pool) для уменьшения нагрузки на GC