如何在C#

时间:2016-12-29 10:33:44

标签: c# debugging memory-leaks

内存泄漏会随着时间的推移而增加,如果它们没有被清理,系统最终会耗尽内存。任何系统上的内存泄漏都很糟糕。我想知道,我们如何在C#应用程序中管理内存泄漏。

2 个答案:

答案 0 :(得分:3)

根据您提供的信息:

存在多种内存泄漏,但一般来说,该术语指的是某种不再使用的资源,但仍会占用内存。如果你有很多这样的应用程序需要大量内存,最终你就会耗尽它。

在C#中,这些是常见的内存泄漏:

  • 不删除事件侦听器。使用创建的任何事件侦听器 引用外部的匿名方法或lambda表达式 对象将保持这些对象的活着。记得删除事件 听众不再使用时。
  • 保持数据库连接或结果集不打开时保持打开状态 用过的。记得在所有IDisposable对象上调用Dispose()。使用 使用声明。
  • 使用p / Invoke调用C函数,它分配你的内存 然后永远不会释放。

我还建议你阅读article

答案 1 :(得分:0)

我建议你研究Garbage Collection。引用第一句话:

在公共语言运行库(CLR)中,垃圾收集器充当自动内存管理器。

正如RenéVogt所说,没有什么可以管理的,因为现有系统可以为您处理。

你需要做的唯一事情就是避免内存泄漏是确保你的应用程序永远不会抛出OutOfMemoryException,这可以通过使用良好的开发策略并避免使用未经验证的条件来确保循环来确保它将在某个时刻中断,而不是在抛出异常之前不断创建对象。