第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我是否需要將地圖設(shè)置為零才能對(duì)其進(jìn)行垃圾收集?

我是否需要將地圖設(shè)置為零才能對(duì)其進(jìn)行垃圾收集?

Go
慕森卡 2022-01-04 21:10:44
假設(shè)我有一個(gè)簡(jiǎn)單的映射,將字符串作為鍵類型,將自定義結(jié)構(gòu)作為值類型。像這樣:map[string]*struct我用許多不同的值填充這張地圖,并且在一段時(shí)間后,這些值中的許多將永遠(yuǎn)不會(huì)再次使用。所以我不確定 golang 垃圾收集器是否會(huì)為我清理我的地圖,或者我需要自己做。這使它看起來(lái)垃圾收集器不會(huì)為我做,我唯一的解決方案是如果我想不時(shí)釋放一些內(nèi)存,將我的地圖設(shè)置為 nil。這是真的?或者有沒(méi)有另一種方法可以在不丟失我的地圖中非“非活動(dòng)”值的情況下做到這一點(diǎn)?
查看完整描述

2 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

為了嘗試完全回答這個(gè)問(wèn)題,我們需要弄清楚問(wèn)題到底是什么。

對(duì)于標(biāo)題問(wèn)題:

我是否需要將地圖設(shè)置為零才能對(duì)其進(jìn)行垃圾收集?

不,一旦地圖值超出范圍,它將像任何其他值一樣被垃圾收集。

map[string]*stuct用許多不同的值填充這個(gè) [ ] 映射,并且在一段時(shí)間后,這些值中的許多將永遠(yuǎn)不會(huì)再次使用。

您展示的這個(gè)示例地圖包含指針值,只要它們包含在地圖中,就永遠(yuǎn)不會(huì)收集它們指向的值。從映射中刪除值(使用delete或?qū)㈡I設(shè)置為另一個(gè)值)將允許收集指針引用的內(nèi)存。不需要對(duì)地圖進(jìn)行特殊處理以確保垃圾收集。

現(xiàn)在,map 的內(nèi)部結(jié)構(gòu)目前沒(méi)有被壓縮,小值(包括指針和 128 字節(jié)以下的任何東西)直接存儲(chǔ)在哈希桶中。包含數(shù)百萬(wàn)個(gè)條目的地圖在刪除這些條目后不會(huì)立即變小,因此如果您需要釋放該內(nèi)存,最好將您想要的剩余值復(fù)制到新地圖中。這類似于擁有一個(gè)不再需要的大切片,除了一些值,您需要將剩余的值復(fù)制到新切片以釋放原始支持?jǐn)?shù)組。


查看完整回答
反對(duì) 回復(fù) 2022-01-04
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以delete()從地圖中單獨(dú)輸入條目,即使是在對(duì)其進(jìn)行迭代時(shí)也是如此。如果條目的值無(wú)法從其他任何東西訪問(wèn)(并且它足夠大),它們將被 GC 處理。

您看的問(wèn)題引用了一些舊代碼(您可以自己查看源代碼),從地圖中刪除對(duì)象后應(yīng)該清空內(nèi)存


查看完整回答
反對(duì) 回復(fù) 2022-01-04
  • 2 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)