2 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
有些事情要清楚。Go 是一種垃圾收集語言,這意味著當(dāng)這些變量變得無法訪問時(shí),垃圾收集器會(huì)自動(dòng)釋放變量分配和使用的內(nèi)存(如果您有另一個(gè)指向該變量的指針,它仍然算作“可訪問”)。
釋放的內(nèi)存并不意味著它會(huì)返回給操作系統(tǒng)。釋放內(nèi)存意味著可以回收內(nèi)存,如果需要,可以將其重用于另一個(gè)變量。因此,從操作系統(tǒng)來看,您不會(huì)僅僅因?yàn)槟承┳兞孔兊脽o法訪問而立即看到內(nèi)存減少,并且垃圾收集器檢測(cè)到這一點(diǎn)并釋放了它使用的內(nèi)存。
但是,如果一段時(shí)間(通常是 5 分鐘左右)不使用,Go 運(yùn)行時(shí)會(huì)將內(nèi)存返回給操作系統(tǒng)。如果在此期間內(nèi)存使用量增加(并且可選地再次縮?。?,則內(nèi)存很可能不會(huì)返回給操作系統(tǒng)。
如果您等待一段時(shí)間并且不再分配內(nèi)存,則釋放的內(nèi)存最終將返回給操作系統(tǒng)(顯然不是全部,但未使用的“大塊”將是)。如果您不能等待這種情況發(fā)生,您可以調(diào)用debug.FreeOSMemory()
強(qiáng)制執(zhí)行此行為:
FreeOSMemory 強(qiáng)制進(jìn)行垃圾收集,然后嘗試將盡可能多的內(nèi)存返回給操作系統(tǒng)。(即使不調(diào)用它,運(yùn)行時(shí)也會(huì)在后臺(tái)任務(wù)中逐漸將內(nèi)存返回給操作系統(tǒng)。)

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)沒有人再引用它時(shí),它最終會(huì)被釋放,Go 有一個(gè)相當(dāng)不錯(cuò)的 GC。
- 2 回答
- 0 關(guān)注
- 398 瀏覽
添加回答
舉報(bào)