2011-06-22 59 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將無法彙集這些緩衝區。

希望這有幫助。

相關問題