Ответ
Arena — это экспериментальная фича в Go (начиная с версии 1.20), предназначенная для управления памятью вручную. Она позволяет выделять память в виде области (arena), из которой можно аллоцировать объекты, а затем освобождать всю область разом, избегая сборки мусора для отдельных объектов.
Пример:
import "arena"
type MyStruct struct {
Data int
}
func main() {
a := arena.NewArena()
defer a.Free()
obj := arena.New[MyStruct](a)
obj.Data = 42
}
Нюансы:
- Только для оптимизации в критичных к памяти сценариях
- Объекты из arena нельзя использовать после вызова
Free() - Не thread-safe
- Экспериментальная фича (требует
GOEXPERIMENT=arenas)