zoukankan      html  css  js  c++  java
  • Windows系统CPU内存网络性能统计第一篇 内存

    最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量。现在将其整理一下(共有三篇),希望对大家有所帮助。

    目录如下:

    1.《Windows系统CPU内存网络性能统计第一篇 内存

    2.《Windows系统CPU内存网络性能统计第二篇 CPU》

    3.《Windows系统CPU内存网络性能统计第三篇网络流量》

    本篇将介绍统计系统内存使用情况,包括内存使用率、总物理内存大小、可用物理内存大小、总虚拟内存大小,可用虚拟内存大小等等。统计系统内存使用情况是非常简单的,直接使用GlobalMemoryStatus函数进行查询就可以了。其函数原型如下:

    void WINAPIGlobalMemoryStatus(

        __out         LPMEMORYSTATUS lpBuffer

    );

    这个函数将传出MEMORYSTATUS类型的结构体,该结构体就描述了系统中内存的使用情况。详细可以见代码:

    [cpp] view plain copy
     
    1. // Windows系统CPU内存网络性能统计第一篇 内存 GlobalMemoryStatus  
    2. //By MoreWindows-(http://blog.csdn.net/MoreWindows)  
    3. #include <stdio.h>  
    4. #include <windows.h>  
    5. const int KB_DIV = 1024;  
    6. const int MB_DIV = 1024 * 1024;  
    7. int main()  
    8. {  
    9.     printf("    Windows系统CPU内存网络性能统计第一篇 内存 GlobalMemoryStatus ");        
    10.     printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) -- ");   
    11.   
    12.     MEMORYSTATUS memStatus;  
    13.     GlobalMemoryStatus(&memStatus);  
    14.       
    15.   
    16.     printf ("当前内存使用率: %d%% ", memStatus.dwMemoryLoad);  
    17.   
    18.     printf ("系统物理内存总量: %dKB (%dMB) ", memStatus.dwTotalPhys / KB_DIV, memStatus.dwTotalPhys / MB_DIV);  
    19.     printf ("当前可用物理内存: %dKB (%dMB) ", memStatus.dwAvailPhys / KB_DIV, memStatus.dwAvailPhys / MB_DIV);  
    20.       
    21.     printf ("系统虚拟内存总量: %dKB (%dMB) ", memStatus.dwTotalVirtual / KB_DIV, memStatus.dwTotalVirtual / MB_DIV);  
    22.     printf ("当前空闲虚拟内存: %dKB (%dMB) ", memStatus.dwAvailVirtual / KB_DIV, memStatus.dwAvailVirtual / MB_DIV);  
    23.   
    24.     printf ("系统页面文件总量: %dKB (%dMB) ", memStatus.dwTotalPageFile / KB_DIV, memStatus.dwTotalPageFile / MB_DIV);  
    25.     printf ("当前空闲页面文件: %dKB (%dMB) ", memStatus.dwAvailPageFile / KB_DIV, memStatus.dwAvailPageFile / MB_DIV);  
    26.     return 0;  
    27. }  

    在本机上运行结果如下,呵呵,2G内存对XP系统来说还是很够用的。换成Win7肯定不会有这么可用内存。

     

     

    由于MEMORYSTATUS结构体对于内存大小是用DWORD来存储的,DWORD只有4个字节,最大为4G。因此当系统的内存大于4GB时肯定会产生一些问题的。因此Windows系统提供了另一个函数——GlobalMemoryStatusEx,其函数原型如下:

    BOOLWINAPIGlobalMemoryStatusEx(

        __in_out      LPMEMORYSTATUSEXlpBuffer

    );

    这个函数即前面的GlobalMemoryStatus函数的增强版。它将传出MEMORYSTATUSEX类型的结构体,这个结构体会使用DWORDLONG类型的变量来描述内存的大小,DWORDLONG与__int64类似,占8字节。下面也给出使用GlobalMemoryStatusEx函数来统计内存信息的源代码:

    [cpp] view plain copy
     
    1. // Windows系统CPU内存网络性能统计第一篇 内存 GlobalMemoryStatusEx  
    2. //By MoreWindows-(http://blog.csdn.net/MoreWindows)  
    3. #include <stdio.h>  
    4. #include <windows.h>  
    5.   
    6. const int KB_DIV = 1024;  
    7. const int MB_DIV = 1024 * 1024;  
    8.   
    9.   
    10. int main()  
    11. {  
    12.     printf("    Windows系统CPU内存网络性能统计第一篇 内存 GlobalMemoryStatusEx ");        
    13.     printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) -- ");   
    14.   
    15.     MEMORYSTATUSEX memStatusEx;   
    16.     memStatusEx.dwLength = sizeof(memStatusEx);  
    17.     if (GlobalMemoryStatusEx(&memStatusEx))  
    18.     {  
    19.         printf ("当前内存使用率: %d%% ", memStatusEx.dwMemoryLoad);  
    20.   
    21.         printf ("系统物理内存总量:  %I64dKB (%I64dMB) ", memStatusEx.ullTotalPhys / KB_DIV, memStatusEx.ullTotalPhys / MB_DIV);  
    22.         printf ("当前可用物理内存:  %I64dKB (%I64dMB) ", memStatusEx.ullAvailPhys / KB_DIV, memStatusEx.ullAvailPhys / MB_DIV);  
    23.   
    24.         printf ("系统虚拟内存总量:  %I64dKB (%I64dMB) ", memStatusEx.ullTotalVirtual / KB_DIV, memStatusEx.ullTotalVirtual / MB_DIV);  
    25.         printf ("当前空闲虚拟内存:  %I64dKB (%I64dMB) ", memStatusEx.ullAvailVirtual / KB_DIV, memStatusEx.ullAvailVirtual / MB_DIV);  
    26.   
    27.         printf ("系统页面文件总量:  %I64dKB (%I64dMB) ", memStatusEx.ullTotalPageFile / KB_DIV, memStatusEx.ullTotalPageFile / MB_DIV);  
    28.         printf ("当前空闲页面文件:  %I64dKB (%I64dMB) ", memStatusEx.ullAvailPageFile / KB_DIV, memStatusEx.ullAvailPageFile / MB_DIV);  
    29.     }  
    30.     return 0;  
    31. }  

    运行结果如下:

     

     

     

    本篇文章介绍和示范了GlobalMemoryStatus和GlobalMemoryStatusEx函数来查询内存使用情况。下面二篇《Windows系统CPU内存网络性能统计第二篇 CPU》和《Windows系统CPU内存网络性能统计第三篇 网络流量》将分别介绍查询CPU使用情况和网络流量统计,欢迎继续浏览。

    http://blog.csdn.net/morewindows/article/details/8459219

  • 相关阅读:
    回归模型与房价预测
    朴素贝叶斯应用:垃圾邮件分类
    sklearn中的朴素贝叶斯模型及其应用
    朴素贝叶斯
    KMEAMS算法应用:图片压缩与贝叶斯公式理解
    第九周 课堂
    numpy数组及处理:效率对比
    完整的中英文词频统计
    杜-----------前期作业小笔记
    django_apscheduler 0.4.0删除了name字段
  • 原文地址:https://www.cnblogs.com/findumars/p/7223479.html
Copyright © 2011-2022 走看看