C#語法簡潔、優雅,類庫豐富,是我最喜愛的計算機語言,沒有“之一”。但是,經過深入學習后發現,C#的內存管理,也就是通常所說的垃圾回收(GC)機制,雖然跟其他支持GC的語言相比,已經很優秀了,但與手動管理內存的語言,如C++等相比,仍有差距,比如內存回收不夠及時或頻繁回收導致卡頓等。
我一直在思考,有沒有可能在保留C#自動管理內存的優勢的同時,使其效率能與手動管理相媲美?我的結論是可以,雖然并不容易。我的核心思路是盡可能減少觸發GC的次數,當不得不觸發GC時盡可能縮短GC的時間。在后面的該系列文章中,我將分別介紹我所想到的優化方案。
不過,程序員同行們先別高興太早,我提出的方案不是給你們用的,而是提給微軟的,畢竟GC涉及到比較底層的東西,所以要進行徹底的優化也需要底層的改動,比如需要修改編譯器或CLR運行時等,只有微軟才能做到。但大家也別被這句話嚇著了,我也并不是什么大神,只是對內存管理感興趣,多思考了一些而已。我對底層機制也并非完全了解,所說的也不一定正確,就當是拋磚引玉,如有不對之處,歡迎大家批評指正。如果誰有更好的方案,也歡迎提出,大家共同討論。
雖然這一系列文章都是如標題所言的“暢想”,可能給人不切實際的感覺,但也并非沒有實現的可能,后續文章中的每個方案我都用英文提到微軟開源.net的網站了,并和一些外國友人進行了初步的討論,我在具體的文章中會附上鏈接,歡迎英文好的同學一起參與討論,說不定就被微軟采納了呢。如果有微軟員工讀到了這一系列文章后認為可行,希望能幫我向.net開發團隊轉達這些建議。
新聞熱點
疑難解答