sync.Pool简介
sync.Pool是属于go标准库sync包,是一个可以分别存取的临时对象的集合。但是不是一个缓存(Cache)。
官方手册的介绍
sync.Pool的由来
Go语言是自动回收垃圾的,不用手动,这样可以减少程序员负担并提高开发效率。但是这样也有一定的副作用,在方便的同时,自动GC也会给程序带来一定的性能问题,并且在高负载的情况下,不能够随意产生太多的垃圾,这样会给GC带来很大的负担并影响程序效率。后来Go官方推出这个sync.Pool包,它主要的作用就是用来保存并临时复用对象,以减少内存的分配,减轻GC的压力。
哪些框架用了sync.Pool
1.ECHO框架(golang的一款轻量级的web框架),Echo框架的路由除了路由基于 radix tree,还使用了sync.Pool来复用内存,减少路由对内存的占用。
http://go-echo.org/guide/routing/
2.Gin框架(也是go开发的一款web框架),也是用来sync.Pool。
sync.Pool主要就两个方法