Имеет ли смысл иметь maxBufferPoolSize меньше, чем maxBufferSize? - PullRequest
4 голосов
/ 22 июня 2011

Имеет ли смысл иметь значение maxBufferPoolSize меньше, чем maxBufferSize?Насколько я понимаю, ответ «нет».Однако true объяснение этих значений из класса BufferManager .NET Framework немного низкоуровневое и немного сбивает с толку.

Странная вещь для большого сообщениятесты, я могу просто увеличить значение 'maxBufferSize' до большего значения, чем значение 'maxBufferPoolSize', и оно работает.Я бы подумал, что если бы я не выделил достаточно большой пул (maxBufferPoolSize), для самого большого выделенного буфера (maxBufferSize) это не помогло бы, но, очевидно, это не так.

Может кто-нибудь объяснить или ответить на этот вопрос, пожалуйста?Спасибо!

1 Ответ

3 голосов
/ 22 октября 2011

Когда жизнь сообщения завершена, мы пытаемся вернуть буфер, который использовался для хранения. WCF успешно вернет буфер, если общий объем памяти, удерживаемой пулом при возврате, будет <= MaxBufferPoolSize. </p>

Аналогично, при создании / получении сообщения WCF пытается взять буфер из пула, и если в пуле нет буфера такого размера, мы выделяем его с помощью GC. Максимальный размер для выделения в режиме с буферизацией защищен размером MaxReceivedMessage.

Вы можете проверить использование памяти вашего приложения и увидеть счетчики производительности GC, и вы увидите, что будет много времени на выделение и сбор GC, потому что WCF не сможет объединить эти буферы.

Надеюсь, это было полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...