日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

.Net8 GC堆對于云原生的支持

來源: 責編: 時間:2023-10-08 07:05:25 259觀看
導讀1.前言云原生跟人工智能可能是未來的方向,.Net8里面為了對于提高云原生支持的成本效益。可以通過GC降低內存限制來縮減資源消耗以及擴展內存資源提升性能。2.概述.Net8之前進行此操作會失敗,因為GC并沒有支持。.Net8則

1.前言

云原生跟人工智能可能是未來的方向,.Net8里面為了對于提高云原生支持的成本效益。可以通過GC降低內存限制來縮減資源消耗以及擴展內存資源提升性能。0Tu28資訊網——每日最新資訊28at.com

2.概述

.Net8之前進行此操作會失敗,因為GC并沒有支持。.Net8則進行了一定程度的支持,可以調用_RefreshMemoryLimit API來使用新的內存限制更新GC。0Tu28資訊網——每日最新資訊28at.com

反射調用此API:0Tu28資訊網——每日最新資訊28at.com

MethodInfo refreshMemoryLimitMethod = typeof(GC).GetMethod(    "_RefreshMemoryLimit", BindingFlags.NonPublic | BindingFlags.Static);refreshMemoryLimitMethod.Invoke(null, Array<object>.Empty);

以上代碼調用之后,它可以自動縮減與擴展云原生相關的內存堆大小。以便更好適應云原生。0Tu28資訊網——每日最新資訊28at.com

還可以刷新與內存限制相關的一些 GC 配置設置。以下代碼片段將堆硬限制設置為 100 兆字節 (MiB):0Tu28資訊網——每日最新資訊28at.com

AppContext.SetData("GCHeapHardLimit", (ulong)100 * 1024 * 1024);MethodInfo refreshMemoryLimitMethod = typeof(GC).GetMethod(    "_RefreshMemoryLimit", BindingFlags.NonPublic | BindingFlags.Static);refreshMemoryLimitMethod.Invoke(null, Array<object>.Empty);

在使用此API之前,它有幾個限制,需要注意下
1.由于_RefreshMemoryLimit API是專用的,因此需要通過專用反射來調用它。
2.不支持32位平臺,比如windows/linux的32位或者arm32指令集。
3.調用此API不一定能成功,因為如果限制或者擴展GC內存過于激進的話,它會返回失敗。如果出現這種情況,請考慮調用 0Tu28資訊網——每日最新資訊28at.com

GC.Collect(2, GCCollectionMode.Aggressive) 以收縮當前內存使用量,然后重試。
4.如果縱向擴展內存限制超出GC認為進程在啟動期間可以處理的大小,則_RefreshMemoryLimit 調用將成功,但它使用的內存不能超過它所認為的限制。0Tu28資訊網——每日最新資訊28at.com

3.原理

_RefreshMemoryLimit實際調用的是QCall也即是GCInterface_RefreshMemoryLimit。而后者里面刷新了GC堆動態和靜態數據,以便適應C#源碼層面適配的云原生擴展和伸縮。0Tu28資訊網——每日最新資訊28at.com

GCHeapUtilities::GetGCHeap()->RefreshMemoryLimit();

然后0Tu28資訊網——每日最新資訊28at.com

int gc_heap::refresh_memory_limit(){    refresh_memory_limit_status status = refresh_success;    if (GCConfig::GetGCTotalPhysicalMemory() != 0)    {        return (int)status;    }    GCToEEInterface::SuspendEE(SUSPEND_FOR_GC);    //此處生路一萬行    }

我們看到它掛起了其它線程的操作,進行了GC的SuspendEE操作。停止了其它線程,以便操作當前線程。0Tu28資訊網——每日最新資訊28at.com

參考:https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-8#garbage-collection0Tu28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-12305-0.html.Net8 GC堆對于云原生的支持

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 解密前端三巨頭:HTML、CSS和JavaScript的關系

下一篇: Vite也要用Rust重寫了,推薦一波開源的 Rust 學習資源!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 兰州市| 乐平市| 西丰县| 湖南省| 临猗县| 明光市| 苍南县| 寿宁县| 富阳市| 贺兰县| 会理县| 垫江县| 鹤岗市| 游戏| 正阳县| 宕昌县| 百色市| 襄汾县| 宁阳县| 永昌县| 仁寿县| 晴隆县| 乌鲁木齐县| 府谷县| 宽城| 祁连县| 赤壁市| 亚东县| 阿克苏市| 隆安县| 固原市| 龙州县| 顺昌县| 呼图壁县| 会泽县| 敖汉旗| 五家渠市| 沁阳市| 沈阳市| 贞丰县| 乌拉特后旗|