3 回答

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
不,我不知道。
我認(rèn)為您不應(yīng)該過(guò)于激進(jìn)地調(diào)整以避免復(fù)制,但是從源頭看來(lái),當(dāng)參數(shù)超過(guò)新 goroutine 的可用堆??臻g(應(yīng)該是千字節(jié))時(shí),會(huì)發(fā)出此錯(cuò)誤。復(fù)制開(kāi)銷(xiāo)在那時(shí)是真實(shí)的,特別是如果這不是這些東西被復(fù)制的唯一時(shí)間。由于大型結(jié)構(gòu)成員(比如 1kb 數(shù)組而不是切片),或者間接地,某些結(jié)構(gòu)可能顯式地大于預(yù)期。如果沒(méi)有,只使用一個(gè)指針是有意義的,如果你擔(dān)心創(chuàng)建垃圾,回收指向 using 的結(jié)構(gòu)sync.Pool
。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
在處理[]BigType大結(jié)構(gòu)的值()列表時(shí)遇到了這個(gè)問(wèn)題:
for _, stct := range listBigStcts {
go func(stct BigType) {
...process stct ...
}(stct) // <-- error occurs here
}
解決方法是替換[]BigType為[]*BigType
- 3 回答
- 0 關(guān)注
- 205 瀏覽
添加回答
舉報(bào)