請考慮以下 Go 代碼:type LargeStructWithNestings struct {...}func generatorChnl() <-chan *LargeStructWithNestings { ... }// code snippetchnl := generatorChnl()for entry := range chnl { // line A doStuffWith(entry) entry = nil // line B}假設通道不經常生成值,并且這些是指向大型結構的指針,那么上述是否會導致對 by 所指向的內存的垃圾回收發生得比原本更早發生?或者,一旦循環旋轉回 ,一旦下一個迭代塊位于 ?line Bentryline Aentryline A目標是找到一種方法,如果可能的話,保持常駐集大小修剪。
Go 通道上的范圍循環和循環變量的垃圾回收
慕碼人8056858
2022-08-09 20:29:50