Пул временных объектов для переиспользования, снижает нагрузку на GC. Объекты могут быть удалены GC в любой момент — не храни в пуле то, что нельзя потерять.
var bufPool = sync.Pool{
New: func() any {
return new(bytes.Buffer)
},
}
buf := bufPool.Get().(*bytes.Buffer)
buf.Reset()
// используем buf
bufPool.Put(buf)
Каждый P имеет свой локальный кеш объектов, что снижает contention. Типичное применение: буферы, парсеры, временные структуры в hot path. Стандартная библиотека использует sync.Pool в fmt, encoding/json.