簡體   English   中英

如何在 Azure 應用服務上運行的 ASP.NET Framework 應用中禁用服務器 GC

[英]How to disable Server GC in ASP.NET Framework App running on Azure App Service

我正在 Azure 應用服務上對 ASP.NET MVC 5/WCF 應用程序進行一些高密度托管,而空閑應用程序每個使用 600~1000MB 的內存,這相當多,因為內存轉儲顯示 GC 堆是只有大約 40MB 滿。 我懷疑這是由於服務器 GC,所以我嘗試通過遵循https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcserver-element並添加來禁用它

<gcServer enabled="false" />

到我的 web.config,但這似乎沒有任何影響

GCSettings.IsServerGC

仍然返回true。 我在這里缺少什么?

編輯:

使用普通的 IIS 可以使用https://weblogs.asp.net/owscott/setting-an-aspnet-config-file-per-application-pool來完成,但在 Azure 應用服務中,你缺乏執行此操作的權限。

好的,首先,您似乎必須使用 GC.Collect() 手動調試組件的內存使用情況: https ://docs.microsoft.com/en-us/dotnet/api/system.gc.collect ?view=netcore-3.1

通過這種方式,您可能能夠查明代碼的特定部分,這些部分要么由於垃圾回收不良而導致內存泄漏,要么使用某些第三方庫的部分。

一旦你完成了這個相當乏味的部分,然后根據你認為導致問題的原因,你應該考慮使用手動處理代碼塊(using var item = new NameOfClass())或者甚至嘗試實現IDispose關於導致它的類: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/implementing-dispose

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM