从池中取出和放入池中都需要加写锁, 锁的开销应该比创建对象开销大吧.
还是说为了减小对象的数目, 降低内存使用, 减少gc扫描时间?
加锁和不加锁, 两种方案哪一种更划算呢?
测试过sync.Pool, 开销也比较大.
gc的回收间隔是2分钟,是否使用对象池的关键就是极限负载情况下, 2分钟内分配的内存会不会导致内存溢出?
如果会,那就需要使用内存池。否则就不需要。内存池本身是有开销。而手动调用gc会严重影响效率
例如tcp udp收包,解包的服务,必须要make byte出来存数据。而make出来的内存只能由gc回收。
#4
更多评论
Web服务器, 经常需要创建一些一次性的对象, goroutine也可以放在池中, 就是不知道有没有必要,
网络连接肯定要使用连接池, 这个我知道.
#2