我想知道我的应用程序在程序本身内占用了多少内存。我正在查找的内存使用量是在Windows任务管理器的“进程”选项卡上的“内存使用量”列中报告的数量。如何获得C++在Windows下的内存使用情况
41
A
回答
43
一个好的起点是GetProcessMemoryInfo,它报告有关指定进程的各种内存信息。您可以通过GetCurrentProcess()
作为进程句柄来获取有关调用进程的信息。
PROCESS_MEMORY_COUNTERS
的WorkingSetSize
成员可能与任务管理器中的Mem Usage coulmn最接近,但它不会完全相同。我会尝试不同的价值观来找到最接近您需求的价值观。
8
GetProcessMemoryInfo是你正在寻找的功能。 MSDN上的文档将为您指出正确的方向。从您传入的PROCESS_MEMORY_COUNTERS结构中获取想要的信息。
您需要包含psapi.h。
6
试试看看GetProcessMemoryInfo。我没有使用它,但它看起来像你所需要的。
17
我想这就是你要找的人:
#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);
}
1
,以补充罗宁的回答,indead功能GlobalMemoryStatusEx
给你正确的计数器导出虚拟内存使用调用进程:刚。减去ullAvailVirtual
从ullTotalVirtual
获得分配的虚拟内存。你可以使用ProcessExplorer或其他的东西来检查你的自我。
令人困惑的是,系统调用GlobalMemoryStatusEx
不幸具有混合的目的:它提供系统范围和特定于过程的信息,例如,虚拟内存信息。
相关问题
- 1. 如何获得外部程序的内存使用情况 - python
- 2. 如何获得Apache Cordova中的CPU和内存使用情况?
- 3. 如何获得已启动进程的内存使用情况
- 4. OSX - 如何获得NSTask的内存使用情况?
- 5. 如何获取c#应用程序的内存使用情况?
- 6. 如何在情况下获得AVG?
- 7. Windows中的内存使用情况
- 8. Windows vs Linux的内存使用情况
- 9. 如何在Windows中控制MongoDB的内存使用情况?
- 10. 如何在Windows中查看详细的内存使用情况?
- 11. Windows Phone:如何在不使用Contacts.SearchAsync任务的情况下获得联系人?
- 12. 如何在不使用Rails的情况下获得DateTime?
- 13. Windows 2012 SNMP内存使用情况OID
- 14. Windows上C++应用程序的内存使用情况
- 15. 如何在不分配内存的情况下使用ImageView
- 16. 如何在不使用免费()的情况下释放内存
- 17. 如何在不分配内存的情况下测量.net应用程序的内存使用情况?
- 18. CAAnimation链接情况下的内存使用情况
- 19. 如何获得枚举值,而这两种情况下在C#
- 20. 如何分析Windows手机中的内存使用情况?
- 21. 通过getMemoryMXBean()和jvisualvm获得内存使用情况的差异?
- 22. Objective-C内存使用情况
- 23. C++指针内存使用情况
- 24. windows上的内存占用情况
- 25. 如何分析内存使用情况?
- 26. 如何测量内存使用情况
- 27. 获取GPU内存使用情况
- 28. 如何获得cpu的速率(top/ps)和内存的使用情况?
- 29. C#Windows CE .net 3.5检查内存使用情况
- 30. 如何获取WIndows Phone 7的CPU和内存使用情况统计信息?
这可能不是他想知道的,因为这是测量系统使用的内存,而不是个别进程所消耗的内存。然而,知道也是有用的,所以我不会低估它。 – CashCow 2012-09-21 11:25:46