Cercando di andare in fondo a un OutOfMemoryException ho scoperto che .net's BufferManagers, utilizzato dal buffer Buffed TransferMode, era responsabile di sprecare letteralmente centinaia di megabyte (vedere la domanda e la mia risposta su How can I prevent BufferManager/PooledBufferManager in my WCF client app from wasting memory? per i dettagli e come ho potuto risolverlo passando semplicemente da 'buffer' a 'streamed').Un caso di utilizzo del mondo reale per BufferManager
Tralasciando WCF, BufferManagers stati inventati come più performante alternativa a quanto si farebbe normalmente: semplicemente assegnando matrici di byte quando necessario e basandosi sulla GC per pulirli e riciclare una volta il riferimento passa nell'ambito.
Quindi la mia domanda è: qualcuno ha usato BufferManager in un'app reale in modo che abbia fatto una differenza notevole in termini di prestazioni per giustificare l'inconveniente di dover manualmente .Clear() il BufferManager (se fosse necessario) ?
E se così fosse, potrebbe semplicemente creare manualmente un buffer a byte singolo e mantenere un riferimento ad esso non ha risolto quel particolare problema?
ho modificato la mia domanda per renderlo (anche) più chiaro che sto parlando di [.NET] (http://msdn.microsoft.com/en-us/library/ system.servicemodel.channels.buffermanager (v = VS.100) .aspx). Non sono sicuro del motivo per cui hai scritto il tuo (e l'ho usato per rispondere alla mia domanda sull'implementazione di .net). Ma comunque, a parte il fatto che la tua implementazione non viene mai rilasciata una volta acquisita memoria, hai definito come va contro l'abbandono del lavoro nel GC integrato? –
Il secondo paragrafo contiene i risultati del profiler. –