2010-05-17 11 views
24

Tengo un servicio WCF que se ejecuta en MSMQ. La memoria aumenta gradualmente con el tiempo, lo que indica que hay algún tipo de pérdida de memoria. Ejecuté el servicio localmente y supervisé algunos contadores usando PerfMon. Los bytes de montón gestionados de la memoria CLR total permanecen relativamente constantes, mientras que los bytes privados del proceso aumentan con el tiempo. Esto me lleva a creer que hay algún tipo de pérdida de memoria no administrada. Asumiendo que la fuga de memoria no administrada es el problema, ¿cómo abordo el problema? ¿Hay alguna herramienta que pueda utilizar para darme pistas sobre qué está causando la fuga de memoria no administrada? Además, todo lo que mi servicio está haciendo es leer desde la cola transaccional y escribir en una base de datos, todo como parte de una transacción DTC (manejada bajo el capó al requerir una transacción en el contrato de servicio). No estoy haciendo nada explícitamente con COM o DllImports.¿Cómo investigar fugas de memoria no administradas en .NET?

¡Gracias de antemano!

Respuesta

-1

Ants Profiler es digno de consideración. Por lo que puedo recordar, puedes descargar una versión de prueba.

+18

ANTS Profiler no es compatible con perfiles de memoria no administrados. – abhilash

1

Asegúrese de que se cierra el cliente de servicio después de usarlo. algo así como

try { 
... do work ... 
Close(); 
} ... exception handling ... { 
Abort(); 
} 
+3

Haga el 'Cerrar' en el bloque' finally' - de esa manera sucederá incluso si hay una excepción ... – Basic

Cuestiones relacionadas