DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

Go sync.Pool 对象池:如何复用对象减少 GC 压力

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

sync.Pool 对象池:缓存临时对象复用,减少堆分配和 GC 压力。用法:var pool = sync.Pool{ New: func() interface{} { return &Buffer{} } };获取 obj := pool.Get().(*Buffer);用完 pool.Put(obj) 放回。特性:① 池内对象可能被 GC 随时清空(无强引用),New 保证取不到时有兜底;② 适用于创建昂贵、使用频繁的对象(大 buffer、连接包装);③ 不适合保存有状态/需持久的数据。典型应用:bytes.Buffer 复用、json.Encoder 复用。

下载推广海报

圈内讨论推广海报

《Go sync.Pool 对象池:如何复用对象减少 GC 压力》完整推广海报
REPLIES

回复

0 条回复
暂无回复。