tgoop.com/golang_interview/1302
Create:
Last Update:
Last Update:
🛠 Go tip: как правильно использовать sync.Pool
sync.Pool
— это потокобезопасный пул временных объектов в Go. Он помогает переиспользовать объекты, снижая аллокации и нагрузку на GC. Отлично подходит для буферов и временных структур.
⚡ Важные моменты:
- GC может очистить пул — он не вечное хранилище.
- Объекты нужно сбрасывать перед возвратом, иначе вернутся «грязные» данные.
- Для больших или сильно разных по размеру объектов может привести к перерасходу памяти.
✅ Рекомендации:
- Использовать только для короткоживущих и предсказуемых объектов.
- Сбрасывать или обнулять состояние перед Put
.
- Профилировать приложение (`pprof`, `MemStats`) и смотреть эффект.
📌 Пример:
var bufPool = sync.Pool{
New: func() interface{} {
return make([]byte, 1024) // создаём буфер 1КБ
},
}
func process() {
buf := bufPool.Get().([]byte)
defer bufPool.Put(buf[:0]) // сброс длины перед возвратом
// работа с buf...
}
👉 Подробнее
BY Golang вопросы собеседований

Share with your friend now:
tgoop.com/golang_interview/1302