Intentando llegar al final de una OutOfMemoryException encontré que el .net BufferManagers, utilizado por el modo de transferencia buffer de WCF, fue responsable de perder literalmente cientos de megabytes (vea la pregunta y mi propia respuesta en How can I prevent BufferManager/PooledBufferManager in my WCF client app from wasting memory? para más detalles y cómo podría solucionarlo simplemente cambiando de 'almacenado' a 'transmitido').Un caso de uso real para BufferManager
Dejando a un lado WCF, BufferManagers se inventó como una alternativa de mejor rendimiento de lo que normalmente haría: simplemente asignar matrices de bytes cuando los necesita y confiar en el GC para limpiarlos y reciclar una vez que la referencia se sale del alcance.
Así que mi pregunta es: ¿Alguien ha utilizado BufferManagers en una aplicación del mundo real para que haya una diferencia notable en términos de rendimiento para justificar la inconveniencia de tener que manualmente. Borrar() el BufferManager (si fuera necesario) ?
Y, en caso afirmativo, ¿podría haber creado un búfer de byte solo manualmente y mantener una referencia no ha resuelto ese problema en particular?
he editado mi pregunta para que sea (incluso) más claro que estoy hablando de [.NET de] (http://msdn.microsoft.com/en-us/library/ system.servicemodel.channels.buffermanager (v = vs.100) .aspx). No estoy seguro de por qué escribiste el tuyo (y lo usaste para responder mi pregunta sobre la implementación de .net). Pero de todos modos, aparte del hecho de que su implementación nunca se libera una vez que adquirió la memoria, ¿describió cómo le va en contra de dejar el trabajo al GC integrado? –
El segundo párrafo contiene resultados de perfilador. –