1

我正在使用 Visual Studio 2008 处理 Winform / WPF 项目。

它使用多个项目和类将其构建成一个工作产品。

我的问题是,我们注意到内存使用量每秒有 4-8k 泄漏。当然这是一个小泄漏,但它是不间断的连续 4-8k。我们的应用程序会在晚上甚至几天运行。当这几天单独出现时,这个东西已经消耗了比计算机可以处理的更多的内存(通常是 2-3 gigs),并且在 pc 上强制重启是唯一的解决方案。即使除了与我们的主机进行网络通信之外什么都没有发生,这种泄漏也会发生。

通过 ANTS Memory Profiler 对该项目进行进一步分析后,我们发现 Private bytes 数据在不断增长。有没有办法知道这些私人数据是从哪里创建的?我没有太多运气用 ANTS 追踪这个问题。步骤将有很大帮助!

私有字节增加的图像(约 45 分钟):

每个快照的私有字节图

时间线增长的图像(约 45 分钟):

私有字节增长的时间表

提前致谢!

4

1 回答 1

0

如果私有字节不断增加,则意味着您有内存泄漏。试试DebugDiag,它来自 MS 并且免费,也是一个非常好的跟踪 Windows 上的内存泄漏的工具。

使用这个工具很简单,首先你用 DebugDiag 集合创建一个规则来监控你的进程,它会根据你的规则创建内存转储,你可以手动创建内存转储。然后就可以使用DebugDiag Analysis来分析dump了,分析前请设置正确的符号路径。

这篇 MSDN 文章识别和防止托管代码中的内存泄漏也可能有所帮助。本文指出我们如何找出内存泄漏是本机泄漏还是托管泄漏。如果是纯 .NET 管理泄漏,您还可以使用CLR profiler来调试问题。

于 2014-04-16T20:26:37.527 回答