sync.Pool 的实现原理和适用场景 Golang GC 大大减少了程序编程负担,但 GC 是一把双刃剑,带来了编程的方便但同时也增加了运行时开销,使用不当甚至会严重影响程序的性能。因此性能要求高的场景不能任意产生太多的垃圾,如何解决呢? 那就是 ** 重用对象 ** 我们可以简单的使用一个 chan 把这些可重用的对象缓存起来,但如果很多 goroutine 竞争一个 chan 性能肯定是问题,为了避免大家重造车轮,因此官方统一出了一个包 sync.Pool 首先来看下官方给的注释,已经解释的非常到位: // A Pool is a set of temporary objects that may be individually saved and // retrieved. // // Any item stored in the Pool may be removed automatically at any time without // notification. If the Pool holds the only reference when this happens, the // item might be deallocated.……

阅读全文