繁体   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