Windows系統CPU記憶體網路效能統計第一篇 記憶體

來源:互聯網
上載者:User

最近翻出以前做過的Windows系統效能統計程式,這個程式可以統計系統中的CPU使用方式,記憶體使用量情況以及網路流量。現在將其整理一下(共有三篇),希望對大家有所協助。

目錄如下:

1.《Windows系統CPU記憶體網路效能統計第一篇 記憶體》

2.《Windows系統CPU記憶體網路效能統計第二篇 CPU》

3.《Windows系統CPU記憶體網路效能統計第三篇網路流量》

 

本篇將介紹統計系統記憶體使用量情況,包括記憶體使用量率、總實體記憶體大小、可用實體記憶體大小、總虛擬記憶體大小,可用虛擬記憶體大小等等。統計系統記憶體使用量情況是非常簡單的,直接使用GlobalMemoryStatus函數進行查詢就可以了。其函數原型如下:

void WINAPIGlobalMemoryStatus(

    __out         LPMEMORYSTATUS lpBuffer

);

這個函數將傳出MEMORYSTATUS類型的結構體,該結構體就描述了系統中記憶體的使用方式。詳細可以見代碼:

// Windows系統CPU記憶體網路效能統計第一篇 記憶體 GlobalMemoryStatus//By MoreWindows-(http://blog.csdn.net/MoreWindows)#include <stdio.h>#include <windows.h>const int KB_DIV = 1024;const int MB_DIV = 1024 * 1024;int main(){printf("    Windows系統CPU記憶體網路效能統計第一篇 記憶體 GlobalMemoryStatus\n");      printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); MEMORYSTATUS memStatus;GlobalMemoryStatus(&memStatus);printf ("當前記憶體使用量率: %d%%\n", memStatus.dwMemoryLoad);printf ("系統實體記憶體總量: %dKB (%dMB)\n", memStatus.dwTotalPhys / KB_DIV, memStatus.dwTotalPhys / MB_DIV);printf ("當前可用實體記憶體: %dKB (%dMB)\n", memStatus.dwAvailPhys / KB_DIV, memStatus.dwAvailPhys / MB_DIV);printf ("系統虛擬記憶體總量: %dKB (%dMB)\n", memStatus.dwTotalVirtual / KB_DIV, memStatus.dwTotalVirtual / MB_DIV);printf ("當前空閑虛擬記憶體: %dKB (%dMB)\n", memStatus.dwAvailVirtual / KB_DIV, memStatus.dwAvailVirtual / MB_DIV);printf ("系統分頁檔總量: %dKB (%dMB)\n", memStatus.dwTotalPageFile / KB_DIV, memStatus.dwTotalPageFile / MB_DIV);printf ("當前空閑分頁檔: %dKB (%dMB)\n", memStatus.dwAvailPageFile / KB_DIV, memStatus.dwAvailPageFile / MB_DIV);return 0;}

在本機上運行結果如下,呵呵,2G記憶體對XP系統來說還是很夠用的。換成Win7肯定不會有這麼可用記憶體。

 

 

由於MEMORYSTATUS結構體對於記憶體大小是用DWORD來儲存的,DWORD只有4個位元組,最大為4G。因此當系統的記憶體大於4GB時肯定會產生一些問題的。因此Windows系統提供了另一個函數——GlobalMemoryStatusEx,其函數原型如下:

BOOLWINAPIGlobalMemoryStatusEx(

    __in_out      LPMEMORYSTATUSEXlpBuffer

);

這個函數即前面的GlobalMemoryStatus函數的增強版。它將傳出MEMORYSTATUSEX類型的結構體,這個結構體會使用DWORDLONG類型的變數來描述記憶體的大小,DWORDLONG與__int64類似,佔8位元組。下面也給出使用GlobalMemoryStatusEx函數來統計記憶體資訊的原始碼:

// Windows系統CPU記憶體網路效能統計第一篇 記憶體 GlobalMemoryStatusEx//By MoreWindows-(http://blog.csdn.net/MoreWindows)#include <stdio.h>#include <windows.h>const int KB_DIV = 1024;const int MB_DIV = 1024 * 1024;int main(){printf("    Windows系統CPU記憶體網路效能統計第一篇 記憶體 GlobalMemoryStatusEx\n");      printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); MEMORYSTATUSEX memStatusEx; memStatusEx.dwLength = sizeof(memStatusEx);if (GlobalMemoryStatusEx(&memStatusEx)){printf ("當前記憶體使用量率: %d%%\n", memStatusEx.dwMemoryLoad);printf ("系統實體記憶體總量: \t%I64dKB (%I64dMB)\n", memStatusEx.ullTotalPhys / KB_DIV, memStatusEx.ullTotalPhys / MB_DIV);printf ("當前可用實體記憶體: \t%I64dKB (%I64dMB)\n", memStatusEx.ullAvailPhys / KB_DIV, memStatusEx.ullAvailPhys / MB_DIV);printf ("系統虛擬記憶體總量: \t%I64dKB (%I64dMB)\n", memStatusEx.ullTotalVirtual / KB_DIV, memStatusEx.ullTotalVirtual / MB_DIV);printf ("當前空閑虛擬記憶體: \t%I64dKB (%I64dMB)\n", memStatusEx.ullAvailVirtual / KB_DIV, memStatusEx.ullAvailVirtual / MB_DIV);printf ("系統分頁檔總量: \t%I64dKB (%I64dMB)\n", memStatusEx.ullTotalPageFile / KB_DIV, memStatusEx.ullTotalPageFile / MB_DIV);printf ("當前空閑分頁檔: \t%I64dKB (%I64dMB)\n", memStatusEx.ullAvailPageFile / KB_DIV, memStatusEx.ullAvailPageFile / MB_DIV);}return 0;}

運行結果如下:

 

 

 

本篇文章介紹和示範了GlobalMemoryStatus和GlobalMemoryStatusEx函數來查詢記憶體使用量情況。下面二篇《Windows系統CPU記憶體網路效能統計第二篇 CPU》和《Windows系統CPU記憶體網路效能統計第三篇 網路流量》將分別介紹查詢CPU使用方式和網路流量統計,歡迎繼續瀏覽。

 

 

轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8459219

歡迎關注微博:http://weibo.com/MoreWindows

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.