• 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

     
    http://blog.csdn.net/flyingleo1981/article/details/39959387
  • 相关阅读:
    uni-app、VUE、微信小程序之异同
    git学习之通俗易懂篇(四)
    css学习之-----flex布局
    git学习之通俗易懂篇(三)
    git学习之通俗易懂篇(二)
    防止非法登录
    MVC 路由配置
    C# 跨线程调用控件
    【推荐】gitee 的使用,sts4公钥私钥的配置,
    查看java的springboot的内存占用
  • 原文地址:https://www.cnblogs.com/findumars/p/7123266.html
Copyright © 2020-2023  润新知