Estoy tratando de averiguar cuánta memoria consume mi aplicación dentro del programa. El uso de memoria que estoy buscando es el número informado en la columna "Uso de Mem" en la pestaña Procesos del Administrador de tareas de Windows.Cómo obtener el uso de memoria en Windows en C++
Respuesta
Un buen punto de partida sería GetProcessMemoryInfo, que informa varios datos de memoria sobre el proceso especificado. Puede pasar GetCurrentProcess()
como manejador de proceso para obtener información sobre el proceso de llamada.
Probablemente el miembro WorkingSetSize
de PROCESS_MEMORY_COUNTERS
es la combinación más cercana al coupe de Mem Usage en el administrador de tareas, pero no va a ser exactamente el mismo. Experimentaría con los diferentes valores para encontrar el más cercano a tus necesidades.
GetProcessMemoryInfo es la función que está buscando. Los documentos en MSDN lo orientarán en la dirección correcta. Obtenga la información que desea de la estructura PROCESS_MEMORY_COUNTERS que ingresa.
Deberá incluir psapi.h.
Intenta echar un vistazo a GetProcessMemoryInfo. No lo he usado, pero parece lo que necesitas.
Creo que esto es lo que estaba buscando:
#include<windows.h>
#include<stdio.h>
#include<tchar.h>
// Use to convert bytes to MB
#define DIV 1048576
// Use to convert bytes to MB
//#define DIV 1024
// Specify the width of the field in which to print the numbers.
// The asterisk in the format specifier "%*I64d" takes an integer
// argument and uses it to pad and right justify the number.
#define WIDTH 7
void _tmain()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
_tprintf (TEXT("There is %*ld percent of memory in use.\n"),WIDTH, statex.dwMemoryLoad);
_tprintf (TEXT("There are %*I64d total Mbytes of physical memory.\n"),WIDTH,statex.ullTotalPhys/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of physical memory.\n"),WIDTH, statex.ullAvailPhys/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of paging file.\n"),WIDTH, statex.ullTotalPageFile/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of paging file.\n"),WIDTH, statex.ullAvailPageFile/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of virtual memory.\n"),WIDTH, statex.ullTotalVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of virtual memory.\n"),WIDTH, statex.ullAvailVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of extended memory.\n"),WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
Para complementar la respuesta de Ronin, indead la función GlobalMemoryStatusEx
le da los contadores adecuados para derivar el uso de memoria virtual para el proceso de llamada: simplemente restar ullAvailVirtual
desde ullTotalVirtual
para obtener la memoria virtual asignada. Puedes verificar esto por ti mismo usando ProcessExplorer o algo así.
Desafortunadamente, la llamada al sistema GlobalMemoryStatusEx
tiene un propósito mixto: proporciona información amplia del sistema y específica del proceso, p. Ej. información de memoria virtual.
- 1. Obtener el uso de memoria de la computadora en Windows con Python
- 2. Cómo saber el uso de memoria en C++
- 3. ¿Cómo obtener el uso de la CPU en C?
- 4. ¿Cómo evitar quedarse sin memoria en la aplicación de uso de memoria alta? C/C++
- 5. ¿Cómo obtener memoria disponible C++/g ++?
- 6. Uso de cmake en Windows para C++
- 7. ¿Cómo perfil el uso de la memoria?
- 8. C# Windows CE .net 3.5 para comprobar el uso de la memoria
- 9. ¿Cómo obtener el tamaño del terminal en c para Windows?
- 10. Uso de memoria del proceso actual en C
- 11. ¿Cómo puedo obtener la memoria física total en C#?
- 12. ¿Cómo medir el uso del ancho de banda de la memoria en Windows?
- 13. ¿Cómo medir el uso de memoria con C# (como podemos hacer en Java)?
- 14. ¿Cómo perfilo el uso de la memoria en mi proyecto
- 15. Optimizar el uso de memoria en numpy
- 16. Cómo obtener el uso de CPU por hilo en Windows (win32)
- 17. pérdida de memoria Uso de JSON-C
- 18. ¿Cómo obtener el evento de desbloqueo de Windows en la aplicación C# windows?
- 19. ¿Cómo obtener el orden z en Windows?
- 20. Obtener todas las variables env en C \ C++ en Windows
- 21. Uso de recursos en Windows
- 22. cómo reducir el uso de memoria solr?
- 23. Cómo obtener memoria disponible o utilizada en C#
- 24. ¿Cómo puedo obtener el uso de CPU y/o RAM de * THREAD * en C# (código administrado)?
- 25. Cómo determinar el uso de memoria en mi aplicación .NET
- 26. ¿Cómo perfilo el uso de la memoria en Python?
- 27. Cómo supervisar el uso de memoria en heroku (Node.js)
- 28. ¿Cómo reviso el uso de CPU y memoria en Java?
- 29. Cómo calcular el uso de la memoria en PHP
- 30. ¿Cómo obtener información de hardware en Windows usando C++?
Probablemente no es lo que él quería saber, ya que esta memoria de sistema de medida en uso, no la memoria consumida por un proceso individual. Sin embargo, puede ser útil saberlo también, así que no lo marcaré. – CashCow
Fuente: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx – user956584
No se trata de esta cuestión, aunque puede ser útil en general. –