Windows系统内存使用查看

来源:互联网 发布:菲凡软件 编辑:程序博客网 时间:2024/05/29 13:39

函数介绍

GlobalMemoryStatusGlobalMemoryStatusEx用来获得当前可用的物理和虚拟内存信息。其中GlobalMemoryStatus获取单根内存条状态,GlobalMemoryStatusEx获取多根内存条状态。

GlobalMemoryStatusEx的定义为:

BOOL WINAPI GlobalMemoryStatusEx(_Inout_  LPMEMORYSTATUSEX lpBuffer);

MEMORYSTATUSEX的定义为:

typedef struct _MEMORYSTATUSEX{    DWORD     dwLength; //本结构长度    DWORD     dwMemoryLoad; //已用内存百分比    DWORDLONG ullTotalPhys; //物理内存总量    DWORDLONG ullAvailPhys; //可用物理内存    DWORDLONG ullTotalPageFile; //交换文件总的大小    DWORDLONG ullAvailPageFile; //交换文件中空余部分大小    DWORDLONG ullTotalVirtual; //用户可用地址空间    DWORDLONG ullAvailVirtual; //当前空闲的地址空间    DWORDLONG ullAvailExtendedVirtual; //保留值,设为0} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

测试代码

#include <iostream>#include <windows.h>using namespace std;int main(){    MEMORYSTATUSEX memStatus;    memStatus.dwLength = sizeof (memStatus);    GlobalMemoryStatusEx (&memStatus);    cout << "内存初始状态:" << endl;    cout << "内存繁忙程度 = " << memStatus.dwMemoryLoad << endl;    cout << "总物理内存 = " << double(memStatus.ullTotalPhys) /(1024*1024) << "M" << endl;    cout << "可用物理内存 = " << double(memStatus.ullAvailPhys) /(1024*1024) << "M" << endl;    cout << "总页文件 = " << double(memStatus.ullTotalPageFile) /(1024*1024) << "M" << endl;    cout << "可用页文件 = " << double(memStatus.ullAvailPageFile) /(1024*1024) << "M" << endl;    cout << "总进程空间 = " << double(memStatus.ullTotalVirtual) /(1024*1024) << "M" << endl;    cout << "可用进程空间 = " << double(memStatus.ullAvailVirtual) /(1024*1024) << "M" << endl << endl;    system("pause");    return 0;}

输出结果

VS2012 Win7 64位 x64编译

内存初始状态:内存繁忙程度 = 43总物理内存 = 8066.03M可用物理内存 = 4541.91M总页文件 = 8064.21M可用页文件 = 4174.58M总进程空间 = 8.38861e+006M可用进程空间 = 8.3886e+006M

VS2012 Win7 64位 Win32编译

内存初始状态:内存繁忙程度 = 43总物理内存 = 8066.03M可用物理内存 = 4518.97M总页文件 = 8064.21M可用页文件 = 4148.94M总进程空间 = 2047.88M可用进程空间 = 2034.26M

内存消耗坚持

当然,上述函数可用坚持内存的消耗,代码如下:

#include <iostream>#include <windows.h>using namespace std;int main(){    MEMORYSTATUSEX memStatus;    memStatus.dwLength = sizeof (memStatus);    GlobalMemoryStatusEx (&memStatus);    char *dynamic=new char[100*1024*1024];    MEMORYSTATUSEX memStatusData;    memStatusData.dwLength = sizeof (memStatusData);    GlobalMemoryStatusEx (&memStatusData);    cout << "内存消耗情况:" << endl;    cout << "消耗物理内存 = " << double(memStatus.ullAvailPhys - memStatusData.ullAvailPhys) / (1024*1024) << "M" << endl;    cout << "消耗页文件 = " << double(memStatus.ullAvailPageFile - memStatusData.ullAvailPageFile) / (1024*1024) << "M" << endl;    cout << "消耗进程空间 = " << double(memStatus.ullAvailVirtual - memStatusData.ullAvailVirtual) / (1024*1024) << "M" << endl << endl;    system("pause");    return 0;}

输出结果

内存消耗情况:消耗物理内存 = 98.4102M消耗页文件 = 100.395M消耗进程空间 = 100.004M
0 0
原创粉丝点击