1 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
您在每次調(diào)用時(shí)分配兩個(gè) 10M 元素的切片(float64
8 字節(jié)并且更大) 。time.Time
importPrices
當(dāng)然,這些切片中的大多數(shù)最終都會(huì)變成垃圾(據(jù)說(shuō),您用從 返回的那兩個(gè)切片覆蓋了一些變量importPrices
),但這些垃圾會(huì)自然浮動(dòng),直到為您的程序提供支持的 Go 運(yùn)行時(shí)決定收集它。在此之前,內(nèi)存消耗將會(huì)增加。
理解該語(yǔ)言的兩種“標(biāo)準(zhǔn)”實(shí)現(xiàn)(您應(yīng)該使用其中一種)功能掃描GC 與主程序流并行工作是至關(guān)重要的。換句話說(shuō),當(dāng)程序丟失對(duì)已分配內(nèi)存塊的最后一個(gè)實(shí)時(shí)引用時(shí),該塊占用的內(nèi)存在那一刻不會(huì)發(fā)生任何事情- 它必須等到 GC 找到它并進(jìn)行收集。這種情況發(fā)生的確切時(shí)間大多是無(wú)法預(yù)測(cè)的。Go 具有復(fù)雜的動(dòng)態(tài)算法來(lái)調(diào)整GC 的速度,從而在收集垃圾所花費(fèi)的 CPU 周期數(shù)量和讓內(nèi)存消耗增長(zhǎng)之間取得一定的平衡。
對(duì)于當(dāng)前的問題,通常的方法是簡(jiǎn)單地重用迭代之間分配的內(nèi)存。也就是說(shuō),在調(diào)用之前預(yù)先分配切片importPrices
,將它們傳遞到那里,然后將它們重置為零長(zhǎng)度,然后再次傳遞它們。
- 1 回答
- 0 關(guān)注
- 171 瀏覽
添加回答
舉報(bào)