windows 获取当前进程所占内存
程序里碰到使用opencv1的内存泄漏问题,虽然最终也没有查出来,但是找到了这个好工具。
可以获取当前进程运行所占内存
转自
使用SDK的PSAPI (Process Status Helper)中的GetProcessMemoryInfo函数,其定义如下:
BOOL
WINAPI
GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DWORD cb );
PROCESS_MEMORY_COUNTERS结构体定义如下:
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;
测试代码:
#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<<"\r\n"<<endl; cout<<"开始动态分配内存"<<endl; char* buf[5]; for(int i=0;i<sizeof(buf)/sizeof(char*);i++) { buf[i]=new char[102400]; showMemoryInfo(); } cout<<"\r\n"<<endl; cout<<"开始释放内存"<<endl; for(int i=0;i<sizeof(buf)/sizeof(char*);i++) { delete buf[i]; buf[i]=NULL; showMemoryInfo(); } cout<<"\r\n"<<endl; cout<<"回收所有可回收的内存"<<endl; EmptyWorkingSet(GetCurrentProcess()); showMemoryInfo(); return 0;
}
————————————-输出结果————————————
内存使用:2854K/2854K + 884K/884K
回收所有可回收的内存
内存使用:217K/3002K + 888K/888K
开始动态分配内存
内存使用:897K/3002K + 995K/995K
内存使用:1003K/3002K + 1101K/1101K
内存使用:1110K/3002K + 1208K/1208K
内存使用:1212K/3002K + 1314K/1314K
内存使用:1323K/3002K + 1421K/1421K
开始释放内存
内存使用:1363K/3002K + 1421K/1421K
内存使用:1363K/3002K + 1421K/1421K
内存使用:1363K/3002K + 1421K/1421K
内存使用:1363K/3002K + 1421K/1421K
内存使用:847K/3002K + 888K/1421K
回收所有可回收的内存
内存使用:212K/3002K + 888K/1421K
psapi.lib动态库静态库头文件, 下载地址:
就是这里
windows 获取当前进程所占内存相关推荐
- C#获取特定进程CPU和内存使用率
C#获取特定进程CPU和内存使用率 首先是获取特定进程对象,可以使用Process.GetProcesses()方法来获取系统中运行的所有进程,或者使用Process.GetCurrentProces ...
- 获取指定进程所占用内存、指定GPU显存信息、所有GPU型号和驱动
######################################################### # 获取指定进程所占用内存 ############################ ...
- python获取当前进程的CPU内存等信息
简介: psutil可以获取操作系统的各种信息,本文通过一个简单的示例介绍如何获取当前进程的CPU和内存信息. 安装: pip install psutil 代码示例: import psutil i ...
- windows 获取当前进程/线程的ID、句柄和内核地址
获取当前进程 / 线程的 ID .句柄和内核地址 在用户态( RING3 )和内核态( RING0 )下,获取这些值的函数是不同的,而且这些函数的实现原理也是不同的,下面做个小结: 1. 用户态( R ...
- windows服务器system进程cpu占用率高解决方案(ntoskrnl.exe)
之前给客户服务器部署过服务器监控程序,今天收到邮件告警提醒CPU过高,进入监控发现System进程突然升高,这个是系统进程,只查看进程cpu占用率没用,需要去查看System进程里的线程,具体是由那个 ...
- php-fcgi 重新,减小Fcgi环境下所占内存,减小php-cgi重启周期
减小Fcgi环境配置下php-cgi进程所占内存,减小php-cgi重启周期 在fastcgi(FCGI)+PHP的配置中,php-cgi往往比较大占内存,本文研究一下减小php-cgi占内存的方法, ...
- linux共享内存示例,linux 进程间共享内存示例
写入端: #include #include #include #include #include using namespace std; struct MappingDataType { int ...
- 命令top动态监控进程所占系统资源
用top命令显示进程所占的系统资源 这个命令用于动态监控进程所占系统资源,每隔3秒变一次.这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面. 命令top用法 语法: to ...
- jvm疯狂吞占内存,罪魁祸首是谁
分享一篇公司小伙伴的关于jvm占用内存的技术文章 导读:JVM是Java Virtual Machine的缩写,中文名为Java虚拟机.它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实 ...
- 用VC写Assembly代码(6)--附录2[windows进程中的内存结构]
在阅读本文之前,如果你连堆栈是什么多不知道的话,请先阅读文章后面的基础知识. 接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据.那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变 ...
最新文章
- 操作系统知识点:全面
- 休斯顿大学研究人员构建具有神经功能的软体机器人
- SEO优化可以从这几个方面着手
- 【Python】青少年蓝桥杯_每日一题_9.19_三行英文字母
- python hsv inrange 范围_仅20行代码,用python给证件照换底色
- mysql 数据库设置mysql注入_MYSQL数据库浅析MySQL的注入安全问题
- 编程实战:如何管理代码里的常量
- RISC 和 CISC 区别
- hbase 根据主键查询
- 机器学习实战(五)支持向量机SVM(Support Vector Machine)
- 用wrk测试nginx/nodejs/golang
- 大数据分析平台的作用有什么
- Packet Tracer 5.0实验(七) 路由器单臂路由配置
- bzoj 2844: albus就是要第一个出场
- JDK安装环境变量配置以及java命令可用但javac命令不可用解决方案
- 归并排序 MergeSort
- 余世维《成功经理人讲座》之重要又紧急的事情
- 没有装php可以用phpmyadmin,phpMyAdmin 安装及问题总结
- 以树莓派为控制中心的软硬件之开发之脑电波模块
- geo数据差异分析_GEO2R:对GEO数据库中的数据进行差异分析
热门文章
- 定点补码加减法运算_定点整数的加减法
- 笔试题目——研发工程师笔试题
- win10 微信/QQ等能听到别人说话,别人听不到自己说话解决方案
- 创建、清除interval定时器/interval定时器无法清除/判断定时器是否存在
- codeforces633H Fibonacci-ish II
- [莫队算法 线段树 斐波那契 暴力] Codeforces 633H Fibonacci-ish II
- 抖音极速版/快手极速版自动浏览
- ES index not_analyzed
- Index.ANALYZED in lucene4 is deprecated
- excel函数去重_excel去掉重复值的函数用法