goroutine内开buf导致内存耗尽

realted · · 1485 次点击
你所说的1秒钟开一个buf,容易耗尽?我在你的程序的for循环里sleep 1秒后,基本上内存维持在2M以内并且没有看到增长啊 这样疯狂的开goroutine,我实验到2钟崩溃的情况 1:因为短时间巨量的终端输出,导致拿不到相关锁 panic了 2:单个goroutine中分配过多的内存,同一时间又很多goroutine,导致在go的垃圾回收之前耗尽内存,我这边环境是大致每个goroutine分配高于10M的内存的时候会出现这种情况,如果低于10M,则内存会维持在一个稳定的数值,如果在for语句中添加间隔输出(每开1000个goroutine输出一次)会明显感觉到程序的停顿,应该就是gc在运行了
#6
更多评论
你这样无休止,死循环的开,肯定耗尽。实际程序如果真这么大的量,一方面考虑重用,比如对象池;另一方面,可能需要更多机器了。
#1
<a href="/user/channel" title="@channel">@channel</a> 哪些开源项目使用了“重用对象池”的方法?请赐教,我去学习一下
#2