我的一个进程中有一个内存泄漏(或v.high内存使用),我相信这可能是由于它在构造SOAP客户端时使用的BasicHttpBinding中设置不正确/错误所致。
特别是,我很好奇如何知道如何在绑定上使用MaxBufferSize、MaxBufferPoolSize和MaxReceivedMessageSize。是否有理由建议将其从默认设置中更改?
当前代码就是这样做的,
var binding = new BasicHttpBinding();
binding.MaxBufferSize = 5000000; // (5,000,000)
binding.MaxBufferPoolSize = 5000000;
binding.MaxReceivedMessageSize = 5000000;
binding.ReaderQuotas.MaxStringContentLength = 500000; // (500,000)我想我的问题是:
.MaxReceivedMessageSize = long.MaxValue和.MaxStringContentLength = int.MaxValue会有什么坏处吗?我可以确认,由于接收到了一些异常长的字符串,所以需要从默认情况下增加MaxStringContentLength,但是我不知道为什么缓冲区被设置为这些大小。
任何帮助都是非常感谢的!
发布于 2013-05-24 08:49:43
请定义“非常高的内存使用率”。
这些值是否有可能导致高内存使用率或泄漏?
我不这么认为,怀疑服务实现比WCF绑定更符合逻辑,WCF绑定实际上只是接收消息并将其传递给代码的一些管道。
我是否应该/是否可以安全地将这些更改为默认设置?
你可以试试。
只设置.MaxReceivedMessageSize = long.MaxValue和.MaxStringContentLength = int.MaxValue会有什么不利之处吗?
手册说:
服务部门可以在电报上接收的消息的大小.以为界,即为每个消息分配的内存量。
因此,我想将其设置为几个任务并不能提高您的服务的内存使用率。
https://stackoverflow.com/questions/16730719
复制相似问题