我一直在追寻这个内存泄漏大约一个月了,无法解决。该应用程序使用.NETCore 2.2在Azure中运行,并且是一个简单的WebAPI。在我们的开发环境中,我决定编写一个应用程序,该应用程序将向目标应用程序上的端点发送数千个请求。在12:30到凌晨2:30之前,我总共发送了1,000,000个请求。这是内存状态:
因此,专用字节停留在原来的位置,看起来像是所有分页内存,程序停止后,工作集立即下降。我决定在专用字节位于它们所在的位置时转储内存,并且统计信息看起来完全正常。转储的大小超过1.4 GB!但是它显示的是令人难以置信的:
它仅显示对象正在使用的10 MB内存。这些内存分配在哪里?
有趣的一件事是,如果我最终放开它,它会挂一会儿然后崩溃(“ CGI应用程序遇到错误...”)。句柄数将突然突然超过10,000,然后挂起(2分钟的请求时间,取消请求),然后崩溃并永久关闭,直到有人重新启动它。
我不知道下一步该怎么做。我完全不知道是什么导致此内存堆积。 PerfView,dotMemory,Visual Studio显示托管内存没有问题。我在开始和结束时都运行diff,没有什么奇怪的。此时有点绝望。
答案 0 :(得分:1)
通过从.NET Core 2.2到.NET Core 3.1完全消除了此内存泄漏。框架一定有问题。