Goroutine沒有順利結束
1、這里更多的是由于channel+for+select導致的,錯誤的寫法導致了發送者或接收者沒有發現channel已經關閉,任務已經結束了,卻仍然在嘗試輸入輸出https://geektutu.com/post/hpg-exit-goroutine.html
Map的remove方法不會真正的刪除某個key,內存會無限增長
不要把map用作全局
timer的錯誤用法
//錯誤用法
for{select {//這里timer會生成一個新變量,在timer到期之前會一直占用內存case <-time.After(duration):fmt.Println("process request with", duration)}}
//正確用法
idleDelay := time.NewTimer(idleDuration)
defer idleDelay.Stop()
for{idleDelay.Reset(idleDuration)select {case <-idleDelay.C:fmt.Println("process request with", duration)}}