中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何池化.NET內存流以解決大內存堆分配問題

發布時間:2021-12-06 14:29:40 來源:億速云 閱讀:128 作者:柒染 欄目:大數據

這篇文章給大家介紹如何池化.NET內存流以解決大內存堆分配問題,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

與很多依賴于標記-清理的垃圾回收器的語言一樣,C#也會在頻繁分配內存或分配大塊內存時產生性能問題。微軟必應的高級軟件開發工程師Ben Watson,就曾在使用MemoryStream類的時候遇到了這種問題。在他的Writing High-Performance .NET Code一書中,他寫道,

在某個飽受大量LOH(大對象堆)分配之苦的應用中,我們發現如果將某種類型的對象保存在池中,就能解決99%的LOH問題。這個對象就是我們在網絡中序列化和傳輸位的MemoryStream。為了避免碎片,我們保存了一個MemoryStream對象的隊列,盡管實際實現要復雜得多,但理論上來說基本如此。每次MemoryStram對象釋放的時候,就將其放回池中以供復用。

在此之后微軟將他的代碼放到了Microsoft.IO.RecycableMemoryStream類中。該類是傳統的內存流的代替品。在最簡單的情況下,可以用manager.GetStream代替new MemoryStream

注意這個流管理器是線程安全的,并且應該在進程中一直使用。

《華盛頓郵報》作者Ben Watson說,這個工具被優化后要執行如下部分:

  • 利用合并的緩沖區消除大對象堆分配

  • 避免內存泄漏,線程池擁有邊界

  • 避免內存碎片

  • 提供出色的可調試性

  • 提供性能指標跟蹤

關于如何池化.NET內存流以解決大內存堆分配問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗江县| 敦化市| 潮州市| 盐池县| 军事| 绵竹市| 永丰县| 鄂托克前旗| 禄丰县| 泰宁县| 岱山县| 东乌| 遂昌县| 温泉县| 南昌市| 青浦区| 綦江县| 连南| 龙江县| 永新县| 荔波县| 金平| 梨树县| 丰县| 保德县| 抚顺县| 海城市| 海兴县| 安平县| 文山县| 东兴市| 内黄县| 长汀县| 泽普县| 永仁县| 大丰市| 探索| 济阳县| 噶尔县| 烟台市| 若尔盖县|