应用程序的胜利变慢

时间:2011-11-11 08:31:28

标签: visual-studio-2010 memory-leaks performance

我使用Visual Studio .NET构建了一个应用程序,它运行正常。应用程序使用超过2-3小时后开始变慢,我不知道为什么。我使用GC.Collect();来解决内存泄漏问题,但现在我有了新的问题。 有谁知道解决方案?

2 个答案:

答案 0 :(得分:1)

如果您确实有内存泄漏,只需致电GC.Collect()即可。 GarbageCollector只能收集那些不再被别人引用的对象。

如果您没有正确清理对象,GC将不会收集任何内容。

在处理内存消耗时,您应该强烈考虑以下模式:

  1. 弱事件(MSDN Documentation here) 如果您没有取消订阅活动,订阅对象将永远不会被释放到垃圾收集中。 GC.Collect()删除这些对象,它们会使您的记忆混乱。

  2. 实施IDisposable界面(MSDN documentation here) (我强烈建议阅读这个文档,因为我已经看到很多错误的实现。) 您应该始终释放您使用的资源。在提供它的每个对象上调用Dispose()

  3. 这同样适用于流。请始终在提供此功能的每个对象上致电Close()

  4. 为了使点2和3更容易,您可以使用using块。 (MSDN documentation here) 只要这些代码块超出范围,他们就会自动调用给定对象上的相应Dispose()Close()方法。这与使用try... finally组合时相同,但更方便。

答案 1 :(得分:0)

尝试使用内存探查器,例如ANTS Memory Profiler。首先,你需要了解发生了什么,然后你可以考虑如何解决它。

http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/