2011-06-22 54 views
4

让maxBufferPoolSize值小于maxBufferSize是否有意义?根据我的理解,答案是'不'。但是,.NET Framework的BufferManager类中的true explanation of these values有点低级并且有点令人困惑。maxBufferPoolSize小于maxBufferSize是否有意义?

奇怪的事情是大消息的测试,我可以起来只是“MAXBUFFERSIZE”值比“maxBufferPoolSize”值较大的号码,它的工作原理。我想如果我没有分配一个足够大的池(maxBufferPoolSize),对于最大的分配缓冲区(maxBufferSize)它会失败,但显然情况并非如此。

谁能解释或回答这个问题吗?谢谢!

+1

我觉得你的理解是正确的,这是没有意义的概念。它在其他方面起作用的事实不应阻止你使用对你有意义的值。也许你可以向WCF团队请求解释? – Bernard

回答

3

当消息的生命是完整的,我们试图返回用于容纳缓冲区。如果返回池中的内存总量为< = MaxBufferPoolSize,WCF将成功返回缓冲区。

类似地创建时/接收消息WCF尝试从游泳池中挑出的缓冲器,并且如果池不具有大小然后我们分配使用GC的缓冲液。缓冲模式下分配的最大大小由MaxReceivedMessage大小来保护。

您可以检查您的应用程序的内存使用情况,看到GC性能计数器,你会看到会有很多时间在GC分配和收集,因为WCF将无法汇集这些缓冲区。

希望这有帮助。

相关问题