【发布时间】:2017-12-12 10:37:29
【问题描述】:
下图很好地说明了我的问题。
我有一个应用程序,它占用了它可以获取的所有内存。 图像中的快照是在 5-10 分钟的时间跨度内拍摄的。在上一个快照中,我尝试通过 dotMemory 强制执行 GB。
在周末,它吃掉了服务器上 60Gb 的可用内存,IIS 重新启动了进程,然后一切都回到应用程序,从 1Gb 开始,然后又吃掉了 60Gb。
.NET 总量和使用的 .NET 似乎一直在增长,但没有应用程序消耗的总内存那么多。
看快照之间的比较“系统”似乎是拥抱所有内存的命名空间。它远远领先于排名第二的“微软”。
展开“系统”窗格可以看到以下视图。
我将如何进一步分析?当我尝试查看“密钥保留路径”时,我得到以下信息,这似乎对我没有太大帮助。
我以前玩过 dotMemory,但我以前从未经历过这样的事情。通常我可以快速找到一些我自己的命名空间,并通过它缩小到我的代码中我忘记处理某些东西的位置。
我尝试查找其他问题,但似乎没有一个问题与我的情况相同。如果您知道我尚未找到的问题,请随时向我指出另一个问题的方向。
【问题讨论】:
-
从类型统计数据来看,您可能正在创建大量动态内容(程序集),这些内容消耗的内存未计入各种工具中的“.NET used”中。我将开始使用 VMMap 工具查看您的流程。看看什么样的区域正在消耗你的内存 - 大小如几十 GB,你会很快发现它。
标签: .net memory memory-leaks garbage-collection dotmemory