我的一个进程中有内存泄漏(或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
需要从默认值增加,因为收到了一些特别长的字符串,但是我不知道为什么缓冲区被设置为这些大小。
感谢任何帮助!
答案 0 :(得分:0)
请定义“内存使用率非常高”。
这些值是否有可能导致高内存使用或泄漏?
我不这么认为,怀疑服务实现比WCF绑定更合乎逻辑,这实际上只是接收消息并将其传递给您的代码的一些管道。
将这些更改回默认设置是否安全?
你可以试试。
设置.MaxReceivedMessageSize = long.MaxValue和.MaxStringContentLength = int.MaxValue会不会有任何缺点?
manual说:
服务[...]在线路上可以接收的消息大小受为每条消息分配的内存量的限制。
所以我想将它设置为几个演出并不会改善你服务的内存使用情况。