887c4efa245d4c628efaca8184aee2f3
RingBuffer
当运算集中时会伴随着内存的大量分配与释放。重新分配是释放是会消耗一定性能的,另外如果占用的内存不及时释放会严重影响性能。对于有虚拟机的都有自身的GC机制,但GC并不能完全保证释放。在go语言中提供了pool功能,可以建立缓冲pool来重复利用创建的缓存。另一种是使用ringbuffer。其中pool每次使用时从pool中取出一个实例,用完后要清空再放入pool。而ringbuffer是一次性创建,使用完后不需要清理,下次直接覆写。
生产环境使用ringbuffer,都会一次性开一块大内存。虽然内存使用率很高,但是不会造成内存碎片,几乎不会浪费。另外内存的物理布局单一,不容易发生内存越界,悬空指针等