【发布时间】:2016-10-14 10:22:07
【问题描述】:
过去几天我一直在阅读有关内存泄漏的信息,我担心这可能是当前影响我用 C# 编写的应用程序的问题。它应该消耗大约 250 MB 的总内存(这就是它在最初几个小时内消耗的内存)但是,我注意到这个值平均每天翻倍。例如,这是它运行的第 5 天,现在它消耗了大约 1.2 GB 的内存。
所以,我从 SciTech Software 下载了 In-depth .NET Memory Profiling,因为我注意到这实际上是这里推荐的软件,并在不同时期拍摄了 3 张快照。然而,在花了相当多的时间试图理解它们甚至将它们链接到我的代码之后,到目前为止我似乎失败了。
因此,我想首先知道我正在使用的内存分析器是否真的是一个好的,然后你们中是否有人知道如何理解和得出结论的任何指南或演练与此或任何其他内存分析器作为很明显,我怎样才能找到解决内存泄漏问题的方法。
提前感谢您的支持。
【问题讨论】:
-
您可以在 Visual Studio 调试器中运行您的软件吗?那里有一个内置的分析器,可以告诉您哪些对象导致了问题。
-
除了使用
Debugger之外,最好的办法是在您使用关键字new的地方进行全局搜索,确保您手动处理对象或尝试包装using(){}子句周围的对象。第二,我会检查您是否声明了任何类似的对象,例如Object objVariable;,或者您在方法和/或该类级别是否有Object objVariable = null;。也许你可以安装Resharper它也会提供大量的提示和线索......很难在没有看到一些代码的情况下准确确定 -
大对象堆上可能有一些东西。 .Net 有时不适合长时间运行的进程。
-
这里不是寻求产品支持的地方。此外,这种故障排除本身也很昂贵。与此产品的预售人员交谈,看看他们是否可以为您提供帮助。
标签: c# memory memory-management memory-leaks