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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 GC 不收集此內(nèi)存塊

為什么 GC 不收集此內(nèi)存塊

Go
拉風(fēng)的咖菲貓 2022-08-24 18:41:14
我寫了一個程序,試圖學(xué)習(xí)Go的GC。我認(rèn)為最初執(zhí)行mx變量的區(qū)域不應(yīng)該被回收,但我發(fā)現(xiàn)這個區(qū)域仍然可以通過指針訪問。我的代碼有問題嗎?func main()  {    fnc()}type myStruct struct {    P int64    P2 int64}//go:noinlinefunc fnc()  {    mx := &myStruct{100,2} // mx -> 0xc00001c080    my := &myStruct{3,4}  // my -> 0xc00001c090    oldmx := uintptr(unsafe.Pointer(mx))    mx = my    runtime.GC()    debug.FreeOSMemory()    oldmxStc := (*myStruct)(unsafe.Pointer(oldmx))    fmt.Println(oldmxStc)}
查看完整描述

1 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊

為什么GC沒有收集這個塊?

垃圾回收器不會對收集哪些特定的內(nèi)存塊以及何時(shí)收集做出任何承諾。GC的目標(biāo)實(shí)際上非常廣泛,即收集垃圾(無法訪問的內(nèi)存)。它不一定能使程序的內(nèi)存占用盡可能小。正如icza所提到的,這樣做的效率非常低下。

如果你想了解一些關(guān)于Go垃圾收集器如何工作的詳細(xì)信息,我建議你看一些演講或閱讀那些研究過它的人的文章。

這是來自官方Go博客的一個很好的閱讀:https://blog.golang.org/ismmkeynote

垃圾回收器的行為不是由語言本身定義的,在運(yùn)行時(shí)的文檔中只有一些非常模糊的含義。

缺乏此類功能的官方文檔是故意的。維護(hù)者想要這個理想的情況:

  • 開發(fā)人員:不要擔(dān)心GC,只需編寫程序即可

  • 維護(hù)者:不斷改進(jìn)GC以使其盡可能好,以便開發(fā)人員不必考慮它。


查看完整回答
反對 回復(fù) 2022-08-24
  • 1 回答
  • 0 關(guān)注
  • 66 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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