cómo medir el consumo de memoria total del proceso actual mediante programación en .NET?¿Cómo se mide el consumo total de memoria del proceso actual programáticamente en .NET?
Respuesta
Consulte este SO question
Además intente esto
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
PerformanceCounter -
http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx
hay varios de ellos -
http://msdn.microsoft.com/en-us/library/w8f5kw2e.aspx
Aquí está el contador de memoria CLR -
Encuentro esto contrarresta confuso. Ejemplo: "# total reservado Bytes": "Muestra la cantidad de memoria virtual en bytes, actualmente reservado por el recolector de basura." Entonces me pregunto? ¿Se trata de la memoria del proceso o de la memoria que se recopilará pronto? –
'nueva PerformanceCounter ("Proceso", "bytes privados", "ConsoleApplication1.vshost"). RawValue' parece prometedor –
Si sólo desea medir el aumento de ejemplo, el uso de memoria virtual, causada por algunas operaciones diferentes que puede utilizar el siguiente patrón: -
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
var before = System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64;
// performs operations here
var after = System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64;
Esta es, por supuesto, asumiendo que su aplicación en no realizar operaciones en otros hilos, mientras que las operaciones anteriores se están ejecutando.
Puede reemplazar VirtualMemorySize64
con cualquier otra métrica que le interese. Eche un vistazo al tipo System.Diagnostics.Process
para ver qué hay disponible.
He encontrado esto muy útil:
Thread.MemoryBarrier();
var initialMemory = System.GC.GetTotalMemory(true);
// body
var somethingThatConsumesMemory = Enumerable.Range(0, 100000)
.ToArray();
// end
Thread.MemoryBarrier();
var finalMemory = System.GC.GetTotalMemory(true);
var consumption = finalMemory - initialMemory;
Suspiro ... Así que cualquiera que lea esto no está confundido ... Usted solo proporcionó el código para un hilo, por lo que las llamadas a MemoryBarrier son inútiles (y no hay una versión de subprocesos múltiples de las que harían cualquier sentido, tampoco). No estoy seguro de lo que piensas que hacen, pero no es lo que realmente hacen. –
- 1. En Pharo, ¿cómo se puede medir el consumo de memoria total actual del sistema?
- 2. Consumo total de memoria del sistema
- 3. ¿Cómo medir el consumo total de memoria del contenedor STL?
- 4. Consumo de memoria del módulo Python Shelve
- 5. ¿Cómo calculo el consumo total de memoria permgen de una clase?
- 6. Comprender el consumo de memoria en iPhone
- 7. Uso de memoria del proceso actual en C
- 8. ¿Cómo saber sobre el consumo de memoria en mysql?
- 9. Consumo de memoria QTreeView
- 10. Apio - minimiza el consumo de memoria
- 11. Cómo reducir el consumo de memoria phantomjs?
- 12. Consumo de memoria en Cherrypy
- 13. ¿Cómo puedo reducir el consumo de memoria de un proceso Linux mínimo
- 14. ¿Mide el uso de memoria de un proceso en Cocoa/Objectice-C?
- 15. ¿Cómo obtener el ID de proceso actual?
- 16. ¿Cómo registrar el consumo de memoria en Linux?
- 17. ¿Cómo afecta el almacenamiento en caché el consumo de memoria?
- 18. rieles delayed_job problema de consumo de memoria
- 19. Cómo se mide el valor del Factor de relleno SQL
- 20. ¿Aumenta el privilegio del proceso programáticamente?
- 21. Consumo de memoria KDB/Q
- 22. ¿Cómo se mide la suma de la memoria recopilada de Young Generation?
- 23. ¿Cómo se determina el tamaño del proceso?
- 24. ¿Cómo sudo el proceso actual?
- 25. Obtenga el directorio de trabajo actual del proceso con un pid programáticamente en OS X
- 26. Memoria total utilizada por el proceso de Java y el tamaño de pila
- 27. Límite de memoria de proceso del proceso de 64 bits
- 28. Cómo reducir el consumo de memoria C++ por defecto?
- 29. Emgu CV - pérdida de memoria (consumo de memoria)
- 30. ¿Cómo obtener el nombre actual del proceso en Linux?
De acuerdo a este blog http://blogs.msdn.com/salvapatuel/archive/2007/10/13/ memory-working-set-explored.aspx Working set! = Memoria de proceso total –
Pero en mis pruebas el valor de WorkingSet64 es muy muy similar al mostrado por el TaskManager –
@Jader Dias - esta respuesta captura la esencia de lo que se requiere (uso del tipo System.Diagnostics.Process) pero tenga cuidado con lo que el recolector de basura puede o no puede hacer, de lo contrario puede terminar con resultados altamente engañosos. Le muestro cómo evitar este problema en mi respuesta –