Windows系统CPU内存网络性能统计第一篇 内存
最近翻出以前做过的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
Windows系统CPU内存网络性能统计第一篇 内存的更多相关文章
- linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】
转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July ...
- C/C++获取Windows系统CPU和内存及硬盘使用情况
//1.获取Windows系统内存使用率 //windows 内存 使用率 DWORD getWin_MemUsage(){ MEMORYSTATUS ms; ::GlobalMemoryStatus ...
- PHP 性能分析第一篇: Xhprof & Xhgui 介绍
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 什么是性能分析? 性能分析是衡量应用程序在 ...
- PHP 性能分析第一篇: Intro to Xhprof & Xhgui
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 原文链接如下: https://blog. ...
- 索引列上的统计 <第一篇>
一.索引在查询优化中的角色 SQL Server的查询优化器是基于开销的优化器.它通过确认选择性.数据的唯一性以及过滤数据(通过WHERE或JOIN子句)所使用的列来决定最佳的数据访问机制.统计与索引 ...
- 【LWJGL3】LWJGL3的内存分配设计,第一篇,栈上分配
简介 LWJGL (Lightweight Java Game Library 3),是一个支持OpenGL,OpenAl,Opengl ES,Vulkan等的Java绑定库.<我的世界> ...
- Windows系统CPU和内存状态实时查询(Java)
一.背景 需要查询Windows服务器的CPU和内存状态. Linux系统查询CPU和内存状态很简单,一个top命令搞定,Windows就稍微麻烦一些了. 经过资料查找,发现jdk目前不能直接查询系统 ...
- perfmon——使用windows系统自带的性能监视器监控进程信息
第一次使用perfmon监控应用进程的信息,步骤总结如下: 第一部分 性能监视器 1.快捷键Win+R打开运行界面,输入“perfmon”命令后回车即可打开windows的性能监视器 2.点击“性能监 ...
- Windows学习总结(9)——Windows系统常用的网络控制指令
ping 命令式用来测试TCP/IP 网络是否畅通或者网络连接速度的命 令,其原理是根据计算机唯一标示的IP 地址,当用户给目的地址发 送一个数据包时,对方就会返回一个同样大小的数据包,根据返回的 数 ...
随机推荐
- [tmux] Reuse terminal workspaces using tmux sessions
In this lesson, we'll learn how to detach from a running tmux session and leave it running in the ba ...
- html常用属性border-radius、linear-gradient怎么使用
html常用属性border-radius.linear-gradient怎么使用 一.总结 一句话总结: 1.border-radius: 8px 8px 8px 8px !important; 2 ...
- IT增值服务实践心得体会:企业客户的钱比个人客户好赚得多
友情提示 本人喜欢直言不讳,不喜欢拐弯抹角.喜欢从客观和主观.自身和他人等多种角度去探讨问题.如有不当之处,欢迎吐槽. 若干心得体会1.企业客户的钱更好赚,个人客户的钱很难. 为什么这么说呢? a. ...
- 社会化登录分享-Android SDK的二次封装和使用
本系列文章将第三方的登录分享功能进行二次封装,统一接口调用,简化了接不同平台登录分享的步骤. 0 系列文章 系列一 Android SDK的二次封装和使用 系列二 源码解析 系列三 微信SDK接入 系 ...
- 利用WPF建立自己的3d gis软件(非axhost方式)(七)实现简单的粒子效果
原文:利用WPF建立自己的3d gis软件(非axhost方式)(七)实现简单的粒子效果 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew密 ...
- Scala-Numbers
Scala之Numbers 一.前言 前面已经学习了Scala中的String,接着学习Scala的Numbers. 二.Numbers 在Scala中,所有的数字类型,如Byte,Char,Doub ...
- 在嵌入式程序中QT去掉鼠标指针
在像arm的QT编程当中,一般都是使用触摸来操作,当是我们运行程序的时候会发现总是有个鼠标箭头在那里,下面介绍种方法将其给去掉.这样就漂亮多了.在main()函数加入 #include <QWS ...
- C#中的字符串——用Stringbuilder类很重要
注:这篇文章基本是<C#高级编程>(第七版)第九章的学习笔记. 众所周知,C#中处理字符串通常用的都是string,它其实是.NET基础类System.String类的映射.注意一个是小写 ...
- OpenMP编程的任务调度控制
在OpenMP的for任务分担中,各个线程的任务划分是可以由程序员控制调整的.考虑这样一种情况,当在一个循环中每次迭代的计算量不相等时,如果根据系统默认简单的给每个线程分配相同次数的迭代量的话,会导致 ...
- WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口
原文:WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/p ...