2016-06-13 95 views
0

过去几天我一直在阅读内存泄漏问题,我担心这可能是一个目前正在影响我用C#编写的应用程序的问题。它应该消耗我的总内存大约250 MB(这是它在头几个小时左右消耗的),但是,我注意到平均每天这个值翻倍。例如,这是它运行的第5天,现在它消耗大约1.2 GB的内存。需要帮助查找并解决C语言中的内存泄漏问题

因此,我从SciTech软件下载了深入的.NET内存分析,因为我注意到这实际上是一个在这里的建议软件,并在不同时期拍摄了3个快照。然而,花费大量的时间试图理解它们,甚至将它们链接到我的代码之后,似乎我迄今失败了。

因此,我想知道如果我正在使用的内存分析器实际上是一个很好的内存分析器,那么如果你们中的任何一个人都知道有关如何理解这个或任何其他内存分析器并得出结论的任何指导或演练以及显然我怎么能找到我的内存泄漏的解决方案。

在此先感谢您的支持。

+0

您可以在Visual Studio调试器中运行您的软件吗?这里有一个内置的profiler,可以告诉你哪些对象导致了问题。 –

+0

除了使用'Debugger'外,最好的做法是在你使用关键词'new'的地方进行全局搜索,确保你手动处理对象或者试图用'using() {}'子句。第二我会检查,看你是否在Method和/或该级别声明了像Object objVariable这样的对象,或者Object objVariable = null;'。也许你可以安装'Resharper',它会给出吨的提示和线索以及..很难确定没有看到一些代码 – MethodMan

+0

也寻找事件处理程序,不被取消订阅。 [“直到你退订一个事件,发布对象中作为该事件基础的多播委托会引用封装订阅者事件处理程序的委托,只要发布对象拥有该引用,垃圾收集将不会删除你的订阅者对象。“](https://msdn.microsoft.com/en-us/library/ms366768.aspx)。 – Quantic

回答

0

检查这个职位:What Are Some Good .NET Profilers? 我有一些很好的经验,在顶部职位提到的产品。 对于您来说,安装独立测试系统和模拟使用情况的自动化测试将会非常有帮助。这可以让你加快速度,而不需要等待几天才能看到变化。 假设您使用VS2015,您可以使用诊断工具窗口:https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/16/diagnostic-tools-debugger-window-in-visual-studio-2015/ https://blogs.msdn.microsoft.com/visualstudioalm/2015/04/29/diagnosing-event-handler-leaks-with-the-memory-usage-tool-in-visual-studio-2015/