堆内存问题
有一个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