¿Cómo veo la asignación de memoria en una aplicación .NET dada?
-
05-07-2019 - |
Pregunta
Necesito verificar cuánta memoria se asigna en el montón. ¿Hay una manera de obtener este valor programáticamente con C #?
Sé sobre System.Runtime.InteropServices.Marshal.SizeOf (...)
pero eso solo me dice el tamaño de un objeto.
Solución
Utilizando un PerformanceCounter puede consultar el " ; # Bytes en todos los montones " ;, desde su propio proceso, e incluso otros procesos.
Utilice la categoría " .Net CLR Memory " para ver un montón de contadores disponibles.
Debe ver cuál es la diferencia entre la carga del sistema entre el PerformanceCounter y el GC.GetTotalMemory propuesto por Jon Skeet.
Otros consejos
Hace GC.GetTotalMemory
hace todo lo que necesita?
(Tenga en cuenta que SizeOf
solo le indica el tamaño de marshalled , no necesariamente el tamaño de la memoria).