gpt4 book ai didi

c# - 如何在 Azure App Service 上运行的 ASP.NET Framework App 中禁用服务器 GC

转载 作者:行者123 更新时间:2023-12-03 17:32:39 25 4
gpt4 key购买 nike

我正在 Azure App Service 上对 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

仍然返回真实。我在这里想念什么?

编辑:

使用普通 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()) 手动处理代码块。甚至尝试 ti 实现 IDispose在导致它的类上:https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/implementing-dispose .

关于c# - 如何在 Azure App Service 上运行的 ASP.NET Framework App 中禁用服务器 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com