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

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

垃圾收集器如何找到有關(guān)從堆棧完成的對象引用的信息?

垃圾收集器如何找到有關(guān)從堆棧完成的對象引用的信息?

Go
侃侃爾雅 2021-04-30 13:14:23
在具有自動垃圾回收的語言(例如Haskell或Go)中,垃圾回收器如何找出存儲在堆棧中的哪些值是指向內(nèi)存的指針,而哪些只是數(shù)字?如果垃圾收集器僅掃描堆棧并假定所有地址都是對對象的引用,則許多對象可能會被錯誤地標(biāo)記為可訪問。顯然,可以在每個堆棧幀的頂部添加一個值,該值描述了接下來的指針中有多少個值,但這是否會花費(fèi)很多性能呢?在現(xiàn)實中是如何做到的?
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

如前所述,存在假設(shè),那就是東西GC的管理地址的每個位模式的GC實際上是一個指針(所以不要松開東西)。這實際上可以很好地工作,因為調(diào)用指針通常大于小的公共整數(shù),并且通常必須對齊。但是是的,這可能導(dǎo)致某些對象的收集被延遲。Boehm C的收集器以這種方式工作,因為它是基于庫的,因此不會從編譯器獲得任何特定的幫助。

還有一些GC與它們所使用的語言緊密相關(guān),并且實際上知道內(nèi)存中對象的結(jié)構(gòu)。我從沒專門閱讀過堆棧幀處理方面的文章,但是如果編譯器和GC設(shè)計為可以協(xié)同工作,則可以記錄信息以幫助GC。一種技巧是將所有指針引用放在一起,并在每個堆棧幀中使用一個字來記錄有多少個指針,這并不是那么大的開銷。如果您可以找出與每個堆棧框架相對應(yīng)的功能而無需添加一個單詞,那么您可以編譯每個功能的“堆棧框架布局圖”。另一種選擇是使用帶標(biāo)簽的單詞,在該位置設(shè)置低不是指針1的單詞的順序位(由于地址對齊),指針永遠(yuǎn)不需要,因此您可以將它們區(qū)分開。


查看完整回答
反對 回復(fù) 2021-05-10
?
萬千封印

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

Haskell堆棧在每個堆棧幀中使用一個內(nèi)存字(使用位圖)描述該堆棧幀中的哪些值是指針,哪些不是指針。

公平地說,考慮到所有因素,僅需一個內(nèi)存字就不會花費(fèi)太多。您可以將其視為僅向每個方法添加一個變量。那還不是那么糟糕。


查看完整回答
反對 回復(fù) 2021-05-10
  • 3 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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