0

我的一个进程中有内存泄漏(或 v.high 内存使用),我相信这可能是由于它在构造 SOAP 客户端时使用的 BasicHttpBinding 中的设置不正确/不良。

特别是我很好奇如何知道绑定上的 to 、 和 toMaxBufferSizeMaxBufferPoolSize什么。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仅设置and会有什么缺点.MaxStringContentLength = int.MaxValue吗?

我可以确认我知道MaxStringContentLength由于接收到一些特别长的字符串而需要从默认值增加,但是我不知道为什么将缓冲区设置为这些大小。

任何帮助表示赞赏!

4

1 回答 1

0

请定义“非常高的内存使用率”。

这些值是否有可能导致高内存使用或泄漏?

我不这么认为,怀疑服务实现比 WCF 绑定更合乎逻辑,WCF 绑定实际上只是接收消息并将其传递给您的代码的一点管道。

我应该/将这些更改回默认值是否安全?

你可以试试。

仅设置 .MaxReceivedMessageSize = long.MaxValue 和 .MaxStringContentLength = int.MaxValue 会有什么缺点吗?

手册说:

服务 [...] 可以在线接收的消息的大小受为每条消息分配的内存量的限制。

所以我想将它设置为几场演出不会提高您的服务的内存使用率。

于 2013-05-24T08:49:43.670 回答