El uso de memoria es algo más complicado que mostrar un solo número o dos. Le sugiero que eche un vistazo al Mark Russinovich's excellent post en los diferentes tipos de contadores en Windows.
.NET solo complica aún más las cosas. Un proceso .NET es solo otro proceso de Windows, por lo que obviamente tendrá todas las métricas regulares, pero además de eso, el CLR actúa como un administrador de memoria para la aplicación administrada. Entonces, dependiendo del punto de vista, estos números variarán.
El CLR asigna y libera de manera efectiva la memoria virtual en grandes porciones en nombre de la aplicación .NET y luego entrega los bits de memoria a la aplicación según sea necesario. Entonces, aunque su aplicación puede usar muy poca memoria en un momento dado, esta memoria puede o no haber sido liberada al sistema operativo.
Además de eso, el CLR en sí usa memoria para cargar IL, compila IL a código nativo, almacena toda la información de tipo y así sucesivamente. Todo esto se agrega a la huella de memoria del proceso.
Si desea saber cuánta memoria usa su aplicación administrada para los datos, el contador Bytes en todos los montones es útil. Los bytes privados se pueden usar como una estimación aproximada para el uso de la memoria de la aplicación en el nivel del proceso.
También es posible que desee echa un vistazo a estas preguntas relacionadas:
Reducing memory usage of .NET applications?
How to detect where a Memory Leak is?
Tenga en cuenta que el generador de perfiles solo está disponible en las versiones más caras de VS. –
sí @Brian Rasmussen tiene razón. Creo que solo VS Ultimate es compatible con Profiler. –
Necesita VS 2010 premium o superior (que es impar, win7 prof >> home prem mientras que vs2010 prem >> vs2010 prof) – atamanroman