C# 記憶體管理優化暢想----前言

weixin_30639719發表於2020-04-05

    C#語法簡潔、優雅,類庫豐富,是我最喜愛的計算機語言,沒有“之一”。但是,經過深入學習後發現,C#的記憶體管理,也就是通常所說的垃圾回收(GC)機制,雖然跟其他支援GC的語言相比,已經很優秀了,但與手動管理記憶體的語言,如C++等相比,仍有差距,比如記憶體回收不夠及時或頻繁回收導致卡頓等。

    我一直在思考,有沒有可能在保留C#自動管理記憶體的優勢的同時,使其效率能與手動管理相媲美?我的結論是可以,雖然並不容易。我的核心思路是儘可能減少觸發GC的次數,當不得不觸發GC時儘可能縮短GC的時間。在後面的該系列文章中,我將分別介紹我所想到的優化方案。

   不過,程式設計師同行們先別高興太早,我提出的方案不是給你們用的,而是提給微軟的,畢竟GC涉及到比較底層的東西,所以要進行徹底的優化也需要底層的改動,比如需要修改編譯器或CLR執行時等,只有微軟才能做到。但大家也別被這句話嚇著了,我也並不是什麼大神,只是對記憶體管理感興趣,多思考了一些而已。我對底層機制也並非完全瞭解,所說的也不一定正確,就當是拋磚引玉,如有不對之處,歡迎大家批評指正。如果誰有更好的方案,也歡迎提出,大家共同討論。

    雖然這一系列文章都是如標題所言的“暢想”,可能給人不切實際的感覺,但也並非沒有實現的可能,後續文章中的每個方案我都用英文提到微軟開源.net的網站了,並和一些外國友人進行了初步的討論,我在具體的文章中會附上鍊接,歡迎英文好的同學一起參與討論,說不定就被微軟採納了呢。如果有微軟員工讀到了這一系列文章後認為可行,希望能幫我向.net開發團隊轉達這些建議。

轉載於:https://www.cnblogs.com/ygc369/p/4861563.html

相關文章