resumen - La mejor forma de rastrear una pérdida de memoria(C#) solo visible en el cuadro de un cliente
resumen de geomarketing (6)
¿Cuál es la mejor manera de rastrear una pérdida de memoria que solo se encuentra en el cuadro de prueba / versión de un cliente y en ningún otro lugar?
Aquí hay una opción: darles una caja donde la fuga no está presente.
A veces, no es el código.
Editar: es el código, la información o la configuración.
O .NET Framework, el sistema operativo, los controladores, IIS o COM (automatización de Excel, por ejemplo), o cosas por el estilo.
Mi suposición es que la pérdida de memoria no es reproducible, excepto en el cuadro del cliente (al cual no se puede permitir el acceso del desarrollador para la depuración).
Es código, datos o configuración.
Como dices que el código no está defectuoso el 100% del tiempo, culparía a la configuración. Tome una copia de la configuración (y opcionalmente algunos datos) y trate de replicar el problema; no sabrá que ha encontrado y lo arregló sin reproducción.
Finalmente, resuélvelo con un generador de perfiles de memoria.
Si el usuario tiene el problema constantemente, tome un stackdump y analícelo de la manera estándar
(Esta pregunta es algo graciosa, porque estoy rastreando una fuga de memoria que no está presente en mi máquina ...)
PerfMon puede ser útil ( http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/ ). Hay varios contadores que pueden ayudar a reducir qué recurso se está filtrando, y a qué velocidad, etc.
Pruebe con un generador de perfiles de memoria como ANTS Profiler .