与.NET总内存相比,Web应用程序的内存使用率非常高

与.NET总内存相比,Web应用程序的内存使用率非常高,.net,memory,memory-leaks,garbage-collection,dotmemory,.net,Memory,Memory Leaks,Garbage Collection,Dotmemory,下图很好地显示了我的问题 我有一个应用程序,它会消耗掉它所能获得的所有内存。 图像中的快照是在5-10分钟的时间跨度内拍摄的。在上一个快照中,我尝试强制使用GB内存 在周末,它消耗了服务器上所有60Gb的可用内存,IIS重新启动了进程,然后一切都回到了应用程序,从1Gb开始,然后又消耗了60Gb的内存 使用的.NET总量和.NET似乎保持了一点增长,但没有应用程序消耗的总内存那么多 查看快照“系统”之间的比较似乎是包含所有内存的名称空间。它远远领先于排名第二的“微软” 展开“系统”窗格可以看

下图很好地显示了我的问题

我有一个应用程序,它会消耗掉它所能获得的所有内存。 图像中的快照是在5-10分钟的时间跨度内拍摄的。在上一个快照中,我尝试强制使用GB内存

在周末,它消耗了服务器上所有60Gb的可用内存,IIS重新启动了进程,然后一切都回到了应用程序,从1Gb开始,然后又消耗了60Gb的内存

使用的.NET总量和.NET似乎保持了一点增长,但没有应用程序消耗的总内存那么多

查看快照“系统”之间的比较似乎是包含所有内存的名称空间。它远远领先于排名第二的“微软”

展开“系统”窗格可以看到以下视图

我将如何进一步分析这个问题?当我尝试查看“关键保留路径”时,我得到了以下信息,但目前这些信息似乎对我没有多大帮助

我以前玩过dotMemory,但我从未经历过这样的事情。通常,我可以快速找到一些自己的名称空间,并通过这些名称空间将其缩小到我的代码中忘记处理某些内容的地方


我尝试查找其他问题,但没有一个问题的情况与我相同。如果您知道我还没有找到的问题,请随时为我指出另一个问题的方向。

快照中的所有内存都是托管内存。 在应用程序的本机代码中存在巨大的内存泄漏。 一些集合或XML对象保留在内存中,然后保留一些本机内存


在dotTrace中,您无法看到谁保留了您的本地内存。您可以使用ANTS内存分析器来实现这一点。或本机部件的删除器。

从类型统计信息来看,您可能正在创建大量动态内容(程序集),这些动态内容(程序集)消耗的内存没有计入各种工具中使用的“.NET”中。我将开始使用VMMap工具查看您的流程。看看什么样的区域正在消耗你的内存——大小如几十GB,你很快就会发现。我不再受雇于该公司,因此我无法验证使用ANTS是否会显示内存泄漏。但这听起来确实是一个可靠的计划,下次我遇到类似问题时,我会尝试一下