堆内存问题

有一个WCF自己托管的服务必须工作99%的时间。 有时候我们会遇到这样的记忆麻烦:

内存泄漏

但在这些问题发生之后,服务仍照常工作。 我们如何处理这个问题? 任何提示和要点,使强大的服务,将生存在不同的情况下,是非常受欢迎的。


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

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

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

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


如果这是一个WCF问题(我不确定如何处理您的转储),我建议您激活WCF服务器端跟踪,并查看有异常情况(并编辑您的问题以便我们可以进一步提供帮助您)。

以下是解释如何执行此操作的链接:

如何启用WCF跟踪


什么是您的服务行为,特别是ConcurrencyMode和InstanceContextMode。

如果将Multiple作为ConcurrencyMode和InstanceContext设置为(PerCall或PerSession(默认)),那么如果您有大型DataStructures或未定义的资源,则可以定义问题。

如果您使用多个并发性,请尝试InstanceContextMode Single [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple,InstanceContextMode = InstanceContextMode.Single)]

链接地址: http://www.djcxy.com/p/9355.html

上一篇: Heap memory problems

下一篇: mysql query plans