我在我的服務器上收到此錯誤。WCF從緩衝區服務器InsufficientMemoryException緩衝
System.InsufficientMemoryException,mscorlib程序,版本= 4.0.0.0, 文化=中性公鑰= b77a5c561934e089
無法分配的536870912個字節的管理存儲器緩衝器。 可用內存量可能很低。
這發生在最後一條語句返回myCollection。當myCollection是大約45K項目。
服務器配置:
<binding name="LargeTCPBinding"
closeTimeout="00:30:00"
openTimeout="00:30:00"
receiveTimeout="01:00:00"
sendTimeout="01:00:00"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
我做了一些基本的內存分析GC.GetTotalMemory(假)並讓我收集到內存是約170 MB後的差額。
返回集合後發生異常(所以它在緩衝發送期間發生)。
如果我將我的wcf連接配置切換爲流式,這可以修復異常,但通話時間從25秒到1:05分鐘。
只是試圖瞭解這裏發生的事情,因爲這個集合並不那麼大。這是在WCF 4.0,64位CPU上運行的。