Goroutine沒有順利結(jié)束
1、這里更多的是由于channel+for+select導(dǎo)致的,錯(cuò)誤的寫法導(dǎo)致了發(fā)送者或接收者沒有發(fā)現(xiàn)channel已經(jīng)關(guān)閉,任務(wù)已經(jīng)結(jié)束了,卻仍然在嘗試輸入輸出https://geektutu.com/post/hpg-exit-goroutine.html文章來源:http://www.zghlxwxcb.cn/news/detail-649673.html
Map的remove方法不會(huì)真正的刪除某個(gè)key,內(nèi)存會(huì)無限增長
不要把map用作全局文章來源地址http://www.zghlxwxcb.cn/news/detail-649673.html
timer的錯(cuò)誤用法
//錯(cuò)誤用法
for{
select {
//這里timer會(huì)生成一個(gè)新變量,在timer到期之前會(huì)一直占用內(nèi)存
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)
}
}
閉包,某個(gè)局部變量的指針被外部所引用,導(dǎo)致不能被GC
到了這里,關(guān)于【Go】常見的四個(gè)內(nèi)存泄漏問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!