zoukankan      html  css  js  c++  java
  • C++得到当前进程所占用的内存



    使用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
  • 相关阅读:
    Django进阶之session
    Windows下MySQL下载安装、配置与使用
    Windows下安裝並設置Redis
    mysql root密码忘记
    .net core 持续构建简易教程
    SqlServer简单数据分页
    产品规划之战略规划;
    C#Excel文件加密实现,支持xlsx、docx、pptx(C#NetAsp.Net)
    仿QQ空间根据位置弹出PopupWindow显示更多操作效果
    Windows编译Nginx源码
  • 原文地址:https://www.cnblogs.com/nafio/p/9137637.html
Copyright © 2011-2022 走看看