以下代码:
const LOOPNUM int = 200000
func main() {
z := make(chan int16)
for i := 0; i < LOOPNUM; i++ {
go test(z)
}
}
func test(a chan<- int16) {
a <- -1
}
我使用LOOPNUM = 200k和400k运行代码,内存使用情况如下:
在我将goroutine加倍(以及减少内存使用量的任何解决方案)之后,是否有人知道突然内存增加的原因?
谢谢!
答案 0 :(得分:0)
你不是在等待goroutines完成,所以它在你做出改变之前就已经退出了。将其更改为:
const LOOPNUM int = 200000
var wg sync.WaitGroup
func main() {
wg = sync.WaitGroup{}
wg.Add(LOOPNUM)
z := make(chan int16)
for i := 0; i < LOOPNUM; i++ {
go test(z)
}
wg.Wait()
}
func test(a chan<- int16) {
a <- -1
wg.Done()
}
你应该更好地了解正在发生的事情。