如果實現了一種不用暫停世界的GC演算法,會對現在程式語言產生什麼影響?

時間 2021-05-06 07:38:56

1樓:在學習室

這是我乙個學長做報告演講給的乙個圖。

Concurrent GC 和 Copying GC 功能一起實現的話是難點。所以不知道題主的GC是怎麼解決了Stop-the-world, 和 Heap Fragmentation兩個問題

好像Tarjan為核心的GC implementation 也有人在做,不知道題主和他們的是不是一樣的,還是有新的創新。

當然非常支援題主繼續去研究,最好可以繼續發表後續的內容。

2樓:伊光

基於引用計數的GC的最大缺點不在於迴圈引用,而是在於總效率或者說吞吐量的低下。

而且GC相關的研究已經相當成熟了,對GC感興趣可以查閱相關文獻以及一些語言的實現。

不過有一說一,題主的想法還是挺有意思的。

3樓:宇文隳

感覺這個演算法是否solid需要還做一定程度的壓測,ref counting的增減在物件引用解引用密集的情況下事實開銷並不小,而且嚴重影響併發和吞吐量。此外,多平台下原子操作memory barrier的影響是否有考慮。

gc可達性分析stw只是很小的一部分,還要考慮後續的記憶體碎片移動和整理涉及的併發效能和開銷(這其實才是大頭)。

btw,就個人而言,還是更喜歡非侵入性的gc :)

4樓:

原子技術是乙個很重的操作,在某些處理器上(比如沒漏洞版skylake)會被處理為full barrier,比stop world還牛

5樓:

多執行緒中指標變動問題的解決方法這個步進計數講的不是很清楚,比方說有A1->A2-> ... ->A10000-> .... 這麼乙個物件圖,其中A1和A10000是棧上的指標物件,其他的都在堆上,現在A1的引用計數減少,開始T引用演算法來判斷物件的生命週期,掃瞄過程中A10000的成員指標發生變化,是如何讓掃瞄程序知道的呢?

如果相等則跳過該頂點,從下乙個新頂點開始掃瞄

這個意思是如果掃瞄A1的過程中遇到指標變動就停止A1的掃瞄去處理下乙個指標嗎?

6樓:潛木

又來了一堆落後業界多少年云云的…

乙個人單槍匹馬追上老古董的墓碑,幫大家踩一些坑,改善的是國內業界的生態,你們吹得60年前的業界跟你有關係嗎?和孔乙己有啥區別…

支援題主繼續加feature,不用管什麼不如ZGC的孔乙己言論,開個專欄慢慢演進吧

(不過題目可以改的溫和一點,不然更多人來酸你

7樓:September

沒理解錯的話,多執行緒併發那一段用的方法就是read barrier,基於read barrier確實可以實現pauseless GC

然後更新迴圈計數的方式沒看出來跟tracing GC的區別

然後,一般tracing的root比較少的,你這個root是所有物件的樣子。

如果這個世界中了一種魔咒,人類不再得嚴重的傷病,不會死於非命,但是其他事還是正常的,世界會怎麼樣?

阿蘆小呆 相對於地球上其他動物7 8年的壽命,人類是它們的8 12倍。野生動物渾身都是寄生蟲,人類則完全能發現,醫治。人類已經獲得了你說的狀態。可多數人的人生不就呈現在你眼前嗎? Mark 任何事都需要乙個出口,如果crimer can not ctime,就會有其他事物產生。主要還是乙個需求關係的...

如果光是一種生物,它眼裡的世界會是怎麼樣的?

擁有絕對的能力這太不相對了 我更願意假想總有改變物理狀態的能力 這種時候世界在我眼裡也不會有那麼多不順心的地方因為我知道我隨時都可以改變 光如果是一種生物大概得先了解它的三觀 我沒有那樣絕對的能力於是只能從我的角度做上述假想題主如果認為光是一種只有乙個個體的生物,這時候光的行為就更難捉摸了。如果可以...

如果智慧型生物是一種鳥類,世界會是什麼樣的?

不太贊同多種鳥類同時成為智慧型生物的觀點,覺得智慧型生物應該是一種生物,在現存鳥類中最有可能成為智慧型生物的大概是鴉科的鳥類。 王鐵鏟 鳥會飛,魚會遊,蟑螂啃屎,老虎會咬。人啥都不會,只好發展成智慧型生物。鳥?先把翅膀退化掉,估計有可能發展智力,但估計也就是發展成和人類似的物種。 西門吹風 我來開一...