1 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
在每次float64
調(diào)用.time.Time
importPrices
當(dāng)然,這些切片中的大多數(shù)最終都會(huì)變成垃圾(假設(shè)您用從 中返回的這兩個(gè)切片覆蓋了一些變量importPrices
),但是這些垃圾會(huì)自然浮動(dòng),直到為您的程序提供支持的 Go 運(yùn)行時(shí)決定收集它。在此之前,內(nèi)存消耗將會(huì)增長(zhǎng)。
了解該語(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 找到它然后收集它。發(fā)生這種情況的確切時(shí)間幾乎是不可預(yù)測(cè)的。Go 采用復(fù)雜的動(dòng)態(tài)算法來(lái)調(diào)整 GC 的速度,從而在收集垃圾所花費(fèi)的 CPU 周期數(shù)量和讓內(nèi)存消耗增長(zhǎng)之間取得某種平衡。
對(duì)于手頭的問(wèn)題,通常的方法是在迭代之間簡(jiǎn)單地重用分配的內(nèi)存。也就是說(shuō),在調(diào)用之前先分配切片importPrices
,將它們傳遞到那里,然后將它們重置為零長(zhǎng)度,然后再次傳遞它們。
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)