与dotMemory中的.NET total相比,Web应用程序具有非常高的内存使用率

时间:2017-12-12 10:37:29

标签: .net memory memory-leaks garbage-collection dotmemory

下图显示了我的问题。

我有一个应用程序只会占用它可以抓住的所有内存。 图像中的快照是在5-10分钟的时间内拍摄的。在上一个快照中,我尝试通过dotMemory强制执行GB。

周末它在服务器上可以使用60Gb的内存,IIS重新启动了这个过程,然后一切从1Gb开始回到应用程序,然后再次吃到60Gb。

enter image description here

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

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

enter image description here

展开“系统”窗格会给我以下视图。

enter image description here

我将如何进一步分析这一点?当我尝试查看“关键保留路径”时,我得到以下内容,这对我现在似乎没什么帮助。

enter image description here

我以前玩过dotMemory,但我之前从未经历过这样的事情。通常情况下,我可以快速找到一些自己的命名空间,并通过它缩小到我的代码中忘记处理某些内容的位置。

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

1 个答案:

答案 0 :(得分:1)

快照中的所有内存均为托管内存。 您的应用程序本机代码内部有大量内存泄漏。 一些Collection或XML对象保留在内存中,然后保留一些本机内存。

在dotTrace中,您看不到谁保留了您的本机内存(尚未)。您可以使用ANTS Memory Profiler执行此操作。或以Deleaker为母语。