使用SDK的PSAPI (Process Status Helper)
中的
BOOL
GetProcessMemoryInfo(
HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DWORD cb
); typedef
struct _PROCESS_MEMORY_COUNTERS {
DWORD cb;
DWORD PageFaultCount; SIZE_T PeakWorkingSetSize;
//峰值内存使用
SIZE_T WorkingSetSize;
//内存使用
SIZE_T QuotaPeakPagedPoolUsage; SIZE_T QuotaPagedPoolUsage; SIZE_T QuotaPeakNonPagedPoolUsage; SIZE_T QuotaNonPagedPoolUsage; SIZE_T PagefileUsage;
//虚拟内存使用
SIZE_T PeakPagefileUsage;
//峰值虚拟内存使用
} PROCESS_MEMORY_COUNTERS,
*PPROCESS_MEMORY_COUNTERS; #include <iostream>
#include <windows.h>
#include <psapi.h>
#pragma comment(lib,"psapi.lib")
using namespace std;
void showMemoryInfo(void)
{
HANDLE handle=GetCurrentProcess();
PROCESS_MEMORY_COUNTERS pmc;
GetProcessMemoryInfo(handle,&pmc,sizeof(pmc));
cout<<"内存使用:"<<pmc.WorkingSetSize/1000 <<"K/"<<pmc.PeakWorkingSetSize/1000<<"K + "<<pmc.PagefileUsage/1000 <<"K/"<<pmc.PeakPagefileUsage/1000 <<"K"<<endl;
}
int main(int argc,char* argv)
{
showMemoryInfo();
cout<<"回收所有可回收的内存"<<endl;
EmptyWorkingSet(GetCurrentProcess());
showMemoryInfo();
cout<<"开始动态分配内存"<<endl;
char* buf[5];
for(int i=0;i<sizeof(buf)/sizeof(char*);i++)
{
buf[i]=new char[102400];
showMemoryInfo();
}
cout<<"开始释放内存"<<endl;
for(int i=0;i<sizeof(buf)/sizeof(char*);i++)
{
delete buf[i];
buf[i]=NULL;
showMemoryInfo();
}
cout<<"回收所有可回收的内存"<<endl;
EmptyWorkingSet(GetCurrentProcess());
showMemoryInfo();
return 0;
} 输出:
内存使用:1339K/1339K +
356K/356K
回收所有可回收的内存
内存使用:114K/1425K +
356K/356K
开始动态分配内存
内存使用:430K/1425K + 466K/466K
内存使用:438K/1425K +
573K/573K
内存使用:446K/1425K + 679K/679K
内存使用:454K/1425K +
786K/786K
内存使用:462K/1425K + 892K/892K
开始释放内存
内存使用:462K/1425K +
794K/892K
内存使用:454K/1425K + 692K/892K
内存使用:446K/1425K +
589K/892K
内存使用:438K/1425K + 487K/892K
内存使用:425K/1425K +
360K/892K
回收所有可回收的内存
内存使用:110K/1425K + 360K/892K

最新文章

  1. python访问MS SqlServer(通过pyodbc)
  2. 移动端rem布局实践
  3. WCF中因序列化问题引起的异常和错误。
  4. jQuery 效果函数
  5. HDU 2236:无题II(二分搜索+二分匹配)
  6. 本地获取System权限CMD方法汇总(转)
  7. BZOJ 1296: [SCOI2009]粉刷匠 分组DP
  8. Qt Creator (C++)保存文件
  9. stm32之CAN总线基础
  10. 如何找出Xcode中不同版本Swift的路径
  11. mui中confirm在苹果出现bug,confirm点击确定跳转页面再返回后,页面被遮罩盖住无法使用
  12. ES6 模板字符串Template String
  13. springboot整合netty(二)
  14. C# 正则表达式判断是否是数字、是否含有中文、是否是数字字母组合
  15. instanceof判断的对象可以是接口
  16. 利用JQuery Mobile开发web app
  17. oracle 数据库中(创建、解锁、授权、删除)用户
  18. 初探Net框架下的XML编程技术
  19. Spring依赖注入:注解注入
  20. gRPC版本的 Google APIs

热门文章

  1. Java面试题之CyclicBarrier和CountDownLatch的区别
  2. 【TEST】NOI-Linux可用 gedit c++精简配置 附Emacs日常配置
  3. jsp的九大内置对象及EL表达式的隐含对象
  4. HDU 5251 矩形面积(二维凸包旋转卡壳最小矩形覆盖问题) --2015年百度之星程序设计大赛 - 初赛(1)
  5. DataTable 去重合并
  6. BeeUISignal详解
  7. Android 系统启动过程详解
  8. 华为上机测试题(数字字符串转二进制-java)
  9. java基础练习 18
  10. Selenium2+python自动化3-解决pip使用异常【转载】