Sync.Pool 对象重用利器
最近在看 zap 相关的源码,里面用到了很多的 sync.Pool 来优化内存使用,于是花了点时间研究了下。
sync.Pool
是一组可以单独保存和检索的临时对象,之所以称其保存的是临时对象是因为在下一次 GC 的时候,池中对象会被清理,且被清理时不会得到任何通知,因此池中不适合存放数据库连接等持久对象。sync.Pool
的主要用途是存储已分配内存但却不再使用的对象,以供后续重用此对象,减少内存分配产生的碎片垃圾回收,提升性能。
最近在看 zap 相关的源码,里面用到了很多的 sync.Pool 来优化内存使用,于是花了点时间研究了下。
sync.Pool
是一组可以单独保存和检索的临时对象,之所以称其保存的是临时对象是因为在下一次 GC 的时候,池中对象会被清理,且被清理时不会得到任何通知,因此池中不适合存放数据库连接等持久对象。sync.Pool
的主要用途是存储已分配内存但却不再使用的对象,以供后续重用此对象,减少内存分配产生的碎片垃圾回收,提升性能。