堆内存问题

kse*_*een 7 .net c# wcf memory-leaks memory-management

有一个WCF自托管服务,必须在99%的时间内工作.有时候我们会遇到这样的内存麻烦:

内存泄漏

但是在这个问题之后,服务正常.我们如何管理这个?任何提示和要点,以提供强大的服务,将在不同的情况下生存,非常受欢迎.

Cha*_*thJ 3

我不太确定问题出在哪里,但内存泄漏可能是一个原因。

所有代码均受管理。我们使用 devArt 的 dotConnect for Oracle 作为数据层库。

您假设所有代码都是托管的,但可能存在非托管部分。但是,所有一次性对象在使用后必须调用 Dispose 方法,不要以为它们一旦超出范围就被正确处置。最佳实践是,不要让 Disposable 对象超出范围而不调用其 Dispose 方法。如果您将“using”语句用作局部变量,则可以使用它们。

DbConnection 是一次性对象的一个​​很好的示例,请确保处置所有连接(一次性对象)。

  • +1,好建议,Oracle DAL 确实需要 Dispose,因为它们使用非托管代码。遗憾的是,处理 Oracle 连接和命令通常是应用程序中最耗时的操作(恕我直言) (2认同)