2010-06-29 15 views
15

Ho un metodo di servizio WCF che restituisce un array di byte [] grande con dimensioni di circa 2 MB. Tuttavia, quando eseguo quel metodo dal WcfTestClient, ottengo la seguente eccezione.Wcf System.InsufficientMemoryException. Impossibile allocare un buffer di memoria gestita di 536870912 byte

System.InsufficientMemoryException 
Failed to allocate a managed memory buffer of 536870912 bytes. The amount of available memory may be low. 

Ho cercato su google, e le persone sembrano avere questo problema, ma sto lottando per trovare una soluzione e la vera causa del perché è cercando di creare un enorme tampone quali, in primo luogo?

Di seguito sono riportate le impostazioni di configurazione. Ho impostato il maxItemsInObjectGraph = "2147483647", altrimenti è stata generata un'eccezione. Il resto è semplice, credo.

Server

<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="Wcf.ServiceBehavior" 
     name="Wcf.WcfService"> 
     <endpoint address="" binding="wsHttpBinding" contract="Wcf.IWcfService"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Wcf.ServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <diagnostics>  
     <messageLogging maxMessagesToLog="30000"  
       logEntireMessage="true"  
       logMessagesAtServiceLevel="true"  
       logMalformedMessages="true"  
       logMessagesAtTransportLevel="true">  
     </messageLogging>  
    </diagnostics> 
    </system.serviceModel> 

WcfTestClient Config questo è il file di configurazione di default che viene caricato con WcfTestClient

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <wsHttpBinding> 
       <binding name="WSHttpBinding_IWcfService" closeTimeout="00:01:00" 
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
        maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
        allowCookies="false"> 
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
         maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        <reliableSession ordered="true" inactivityTimeout="00:10:00" 
         enabled="false" /> 
        <security mode="Message"> 
         <transport clientCredentialType="Windows" proxyCredentialType="None" 
          realm="" /> 
         <message clientCredentialType="Windows" negotiateServiceCredential="true" 
          algorithmSuite="Default" /> 
        </security> 
       </binding> 
      </wsHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://localhost:4151/Service1.svc" binding="wsHttpBinding" 
       bindingConfiguration="WSHttpBinding_IWcfService" contract="IWcfService" 
       name="WSHttpBinding_IWcfService"> 
       <identity> 
        <dns value="localhost" /> 
       </identity> 
      </endpoint> 
     </client> 
    </system.serviceModel> 
</configuration> 

Ecco l'eccezione dello stack

<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> 

    <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> 

    <EventID>131075</EventID> 
    <Type>3</Type> 
    <SubType Name="Error">0</SubType> 
    <Level>2</Level> 
    <TimeCreated SystemTime="2010-06-29T09:18:23.9616589Z" /> 
    <Source Name="System.ServiceModel" /> 
    <Correlation ActivityID="{7870ff09-e268-4e9d-a692-389fd03db1aa}" /> 
    <Execution ProcessName="WebDev.WebServer20" ProcessID="4812" 
    ThreadID="17" /> 
    <Channel /> 
    <Computer>PC-008915</Computer> 
    </System> 
    <ApplicationData> 
    <TraceData> 
     <DataItem> 
     <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" 
     Severity="Error"> 
      <TraceIdentifier> 
      http://msdn.microsoft.com/en-GB/library/System.ServiceModel.Diagnostics.ThrowingException.aspx</TraceIdentifier> 
      <Description>Throwing an exception.</Description> 
      <AppDomain>5ab4f443-1-129222741421051645</AppDomain> 
      <Exception> 
      <ExceptionType>System.InsufficientMemoryException, 
      mscorlib, Version=2.0.0.0, Culture=neutral, 
      PublicKeyToken=b77a5c561934e089</ExceptionType> 
      <Message>Failed to allocate a managed memory buffer of 
      536870912 bytes. The amount of available memory may be 
      low.</Message> 
      <StackTrace>at 
      System.ServiceModel.Diagnostics.Utility.AllocateByteArray(Int32 
      size) at 
      System.ServiceModel.Channels.BufferManager.GCBufferManager.TakeBuffer(Int32 
      bufferSize) at 
      System.ServiceModel.Channels.BufferedOutputStream.AllocNextChunk(Int32 
      minimumChunkSize) at 
      System.ServiceModel.Channels.BufferedOutputStream.WriteCore(Byte[] 
      buffer, Int32 offset, Int32 size) at 
      System.ServiceModel.Channels.BufferedOutputStream.Write(Byte[] 
      buffer, Int32 offset, Int32 size) at 
      System.Xml.XmlStreamNodeWriter.FlushBuffer() at 
      System.Xml.XmlStreamNodeWriter.GetBuffer(Int32 count, 
      Int32&amp; offset) at 
      System.Xml.XmlStreamNodeWriter.UnsafeWriteUTF8Chars(Char* 
      chars, Int32 charCount) at 
      System.Xml.XmlStreamNodeWriter.WriteUTF8Chars(String 
      value) at 
      System.Xml.XmlUTF8NodeWriter.WriteEndElement(String 
      prefix, String localName) at 
      System.Xml.XmlSigningNodeWriter.WriteEndElement(String 
      prefix, String localName) at 
      System.Xml.XmlBaseWriter.WriteEndElement() at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteString(XmlWriterDelegator 
      xmlWriter, String value, XmlDictionaryString name, 
      XmlDictionaryString ns) at 
      WritePropertyDtoToXml(XmlWriterDelegator , Object , 
      XmlObjectSerializerWriteContext , ClassDataContract) 
      at 
      System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator 
      xmlWriter, Object obj, XmlObjectSerializerWriteContext 
      context) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      WriteArrayOfPropertyDtoToXml(XmlWriterDelegator , 
      Object , XmlObjectSerializerWriteContext , 
      CollectionDataContract) at 
      System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator 
      xmlWriter, Object obj, XmlObjectSerializerWriteContext 
      context) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      WriteEntityTypeDtoToXml(XmlWriterDelegator , Object , 
      XmlObjectSerializerWriteContext , ClassDataContract) 
      at 
      System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator 
      xmlWriter, Object obj, XmlObjectSerializerWriteContext 
      context) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      WriteNodeTypeDtoToXml(XmlWriterDelegator , Object , 
      XmlObjectSerializerWriteContext , ClassDataContract) 
      at 
      System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator 
      xmlWriter, Object obj, XmlObjectSerializerWriteContext 
      context) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator 
      xmlWriter, Object obj, Boolean isDeclaredType, Boolean 
      writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle 
      declaredTypeHandle) at 
      WriteArrayOfNodeTypeDtoToXml(XmlWriterDelegator , 
      Object , XmlObjectSerializerWriteContext , 
      CollectionDataContract) at 
      System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator 
      xmlWriter, Object obj, XmlObjectSerializerWriteContext 
      context) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract 
      dataContract, XmlWriterDelegator xmlWriter, Object obj, 
      RuntimeTypeHandle declaredTypeHandle) at 
      System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator 
      writer, Object graph) at 
      System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator 
      writer, Object graph) at 
      System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator 
      writer, Object graph) at 
      System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter 
      writer, Object graph) at 
      System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart(XmlDictionaryWriter 
      writer, PartInfo part, Object graph) at 
      System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameter(XmlDictionaryWriter 
      writer, PartInfo part, Object graph) at 
      System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeBody(XmlDictionaryWriter 
      writer, MessageVersion version, String action, 
      MessageDescription messageDescription, Object 
      returnValue, Object[] parameters, Boolean isRequest) at 
      System.ServiceModel.Dispatcher.OperationFormatter.SerializeBodyContents(XmlDictionaryWriter 
      writer, MessageVersion version, Object[] parameters, 
      Object returnValue, Boolean isRequest) at 
      System.ServiceModel.Dispatcher.OperationFormatter.OperationFormatterMessage.OperationFormatterBodyWriter.OnWriteBodyContents(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Security.SecurityAppliedMessage.WriteBodyToSignThenEncryptWithFragments(Stream 
      stream, Boolean includeComments, String[] 
      inclusivePrefixes, EncryptedData encryptedData, 
      SymmetricAlgorithm algorithm, XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Security.WSSecurityOneDotZeroSendSecurityHeader.ApplyBodySecurity(XmlDictionaryWriter 
      writer, IPrefixGenerator prefixGenerator) at 
      System.ServiceModel.Security.SecurityAppliedMessage.OnWriteMessage(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Channels.Message.WriteMessage(XmlDictionaryWriter 
      writer) at 
      System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(Message 
      message, BufferManager bufferManager, Int32 
      initialOffset, Int32 maxSizeQuota) at 
      System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(Message 
      message, Int32 maxMessageSize, BufferManager 
      bufferManager, Int32 messageOffset) at 
      System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message 
      message) at 
      System.ServiceModel.Channels.HttpOutput.Send(TimeSpan 
      timeout) at 
      System.ServiceModel.Channels.HttpRequestContext.OnReply(Message 
      message, TimeSpan timeout) at 
      System.ServiceModel.Activation.HostedHttpContext.OnReply(Message 
      message, TimeSpan timeout) at 
      System.ServiceModel.Channels.RequestContextBase.Reply(Message 
      message, TimeSpan timeout) at 
      System.ServiceModel.Security.SecuritySessionServerSettings.SecuritySessionRequestContext.OnReply(Message 
      message, TimeSpan timeout) at 
      System.ServiceModel.Channels.RequestContextBase.Reply(Message 
      message, TimeSpan timeout) at 
      System.ServiceModel.Channels.RequestContextBase.Reply(Message 
      message) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessageCleanup(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp; 
      rpc) at 
      System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean 
      isOperationContextSet) at 
      System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Dispatch(MessageRpc&amp; 
      rpc, Boolean isOperationContextSet) at 
      System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext 
      request, Boolean cleanThread, OperationContext 
      currentOperationContext) at 
      System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext 
      request, OperationContext currentOperationContext) at 
      System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult 
      result) at 
      System.ServiceModel.Dispatcher.ChannelHandler.OnContinueAsyncReceive(Object 
      state) at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2() 
      at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.OnSecurityContextCallback(Object 
      o) at 
      System.Security.SecurityContext.Run(SecurityContext 
      securityContext, ContextCallback callback, Object 
      state) at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke() 
      at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ProcessCallbacks() 
      at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.CompletionCallback(Object 
      state) at 
      System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ScheduledOverlapped.IOCallback(UInt32 
      errorCode, UInt32 numBytes, NativeOverlapped* 
      nativeOverlapped) at 
      System.ServiceModel.Diagnostics.Utility.IOCompletionThunk.UnhandledExceptionFrame(UInt32 
      error, UInt32 bytesRead, NativeOverlapped* 
      nativeOverlapped) at 
      System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 
      errorCode, UInt32 numBytes, NativeOverlapped* 
      pOVERLAP)</StackTrace> 
      <ExceptionString>System.InsufficientMemoryException: 
      Failed to allocate a managed memory buffer of 536870912 
      bytes. The amount of available memory may be low. 
      ---&gt; System.OutOfMemoryException: Exception of type 
      'System.OutOfMemoryException' was thrown. at 
      System.ServiceModel.Diagnostics.Utility.AllocateByteArray(Int32 
      size) --- End of inner exception stack trace 
      ---</ExceptionString> 
      <InnerException> 
       <ExceptionType>System.OutOfMemoryException, mscorlib, 
       Version=2.0.0.0, Culture=neutral, 
       PublicKeyToken=b77a5c561934e089</ExceptionType> 
       <Message>Exception of type 
       'System.OutOfMemoryException' was thrown.</Message> 
       <StackTrace>at 
       System.ServiceModel.Diagnostics.Utility.AllocateByteArray(Int32 
       size)</StackTrace> 
       <ExceptionString>System.OutOfMemoryException: 
       Exception of type 'System.OutOfMemoryException' was 
       thrown. at 
       System.ServiceModel.Diagnostics.Utility.AllocateByteArray(Int32 
       size)</ExceptionString> 
      </InnerException> 
      </Exception> 
     </TraceRecord> 
     </DataItem> 
    </TraceData> 
    </ApplicationData> 
</E2ETraceEvent> 

In attesa di Nabeel

+0

Ho a che fare con lo stesso errore. Potresti pubblicare il tuo stacktrace in modo che possa vedere se ci sono delle somiglianze tra i nostri casi? http://stackoverflow.com/questions/3016446/how-to-best-transfer-large-payloads-of-data-using-wshttp-with-wcf-with-message-se – jpierson

+0

possibile duplicato di [Impossibile allocare un buffer di memoria gestita di 134217728 byte. La quantità di memoria disponibile può essere bassa] (http: // stackoverflow.it/questions/20209641/failed-to-allocate-a-managed-memoria-buffer-di-134217728-byte-l'-importo-di-ava) – Liam

risposta

5

Sei sicuro che il tuo array di byte è solo di circa 2 MB? Dal messaggio di eccezione che hai postato sembra che il messaggio nel buffer si avvicini a 0,5 GB (536870912 byte). Questo errore si verifica in modo coerente? Stai eseguendo più chiamate di servizio nel momento in cui questo si verifica?

Comprendere anche che quando si utilizza WSHttpBinding con Message Security che l'intero messaggio viene memorizzato nel buffer. La mia comprensione è che questo è fatto per crittografare l'intero messaggio in un blocco in modo che i dettagli corrispondenti possano essere forniti nell'intestazione. In altre parole l'intestazione ha bisogno della lunghezza del messaggio che è sconosciuta fino a quando non viene eseguita la crittografia.

Vedere la domanda correlata in cui chiedo How to best transfer large payloads of data using wsHttp with WCF with message security.

+1

Hi JPierson, L'array di byte è in realtà 1 MB. Prima di restituire l'array dal servizio, sono serializzato in modo binario su un file sul disco e la dimensione del file è 1 MB. E non penso che sia molto grande, 1 MB non è nulla di fatto a meno che wcf stesso non lo stia serializzando come 0.5 GB come hai detto tu, ma non capisco perché lo farebbe. Nabeel – nabeelfarid

+0

Bene, per impostazione predefinita WCF utilizza DataContractSerializer che è possibile testare da soli creando un'istanza e serializzando lo stesso array di byte e salvando l'output su disco. In questo modo puoi vedere il contenuto serializzato e vedere anche le sue dimensioni. Un'altra opzione sarebbe utilizzare le utility di tracciamento WCF per dare un'occhiata ai messaggi. – jpierson

+0

Si potrebbe anche voler esaminare la proprietà MaxBytesPerRead e gli altri vincoli. C'è una bella lista di questi in fondo al post nel seguente link. http://nirajrules.wordpress.com/2009/08/03/mtom-vs-streaming-vs-compression-%E2%80%93-large-attachments-over-wcf/ – jpierson

1

Il nostro pool di applicazioni è stato impostato su Riciclo ogni 0 minuti (non riciclare). Dopo averlo cambiato nel 1740 e riciclato manualmente il pool, l'errore è andato via. Penso che il pool di applicazioni esaurisca la memoria disponibile/impegnata e restituisca quel messaggio se tutti gli oggetti non sono stati disposti correttamente in .NET

0

Abbiamo anche avuto esattamente lo stesso problema. Ho cercato di scaricare un documento di soli 15 MB e il cielo di utilizzo della memoria è stato portato a circa 1 GB. Ciò ha provocato un'eccezione eccezionale sul server. La soluzione per noi è stata molto semplice. Il contratto di dati ha implementato un ICollection per ByteArray. Quando abbiamo cambiato questo in un Byte [] il problema era sparito e l'utilizzo della memoria era di nuovo normale. Apparentemente il processo di serializzazione non può gestire il tipo ICollection in modo efficiente.

Problemi correlati