我有一个非常小的WCF服务,托管在控制台应用程序中。
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoService();
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class Service1 : IService1
{
public void DoService()
{
}
}
它被称为
using (ServiceReference1.Service1Client client = new ServiceReference1.Service1Client())
{
client.DoService(new DoServiceRequest());
client.Close();
}
请记住,服务是基于basicHttpBindings发布的。
问题:
现在,当我在循环中执行上述客户端代码1000次时,我发现“All Heap bytes”和“Private Bytes”性能计数器之间存在很大差异(我使用了.net内存分析器)。经过调查,我发现一些对象没有被正确处理。以下是这些对象的列表(找到了1000个未处理的实例-->等同于客户端调用)。
(所有这些对象的命名空间均为System.ServiceModel.Channels)
HttpOutput.ListenerResponseHttpOutput.ListenerResponseOutputStream
BodyWriterMessage
BufferedMessage
HttpRequestContext.ListenerHttpContext.ListenerContextHttpInput.ListenerContextInputStream
HttpRequestContext.ListenerHttpContext
问题 为什么我们有很多未处理的对象,如何控制它们。
请帮忙。