首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >statm不报告更新的VmSize

statm不报告更新的VmSize
EN

Stack Overflow用户
提问于 2013-05-08 00:50:41
回答 1查看 279关注 0票数 0

我试图跟踪我的应用程序占用了多少内存。所以我在读/proc/self/statm

代码语言:javascript
复制
#include <iostream>
#include <fstream>

void print_mem(){
  std::ifstream proc_stream("/proc/self/statm");
  long long VmSize = 0, VmRSS = 0, Share = 0;
  proc_stream >> VmSize >> VmRSS >> Share;
  proc_stream.close();
  std::cout << VmSize << " " << VmRSS << std::endl;
}

struct C{
    int a[256];
};

int main(){
    print_mem();// first call
    C* c = new C;
    print_mem();// second call
    return 0;
}

我期待着VmSize会有一些增长。但我看到的是它总是报告相同的VmSize,VmRSS。它不应该随着我分配的c而改变吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-08 01:24:44

实际上,/proc/self/statm报告的是您的进程使用的虚拟内存大小。

编辑:

I set a[4096] instead of 256 But I don't see any change. However If I change it to a[1024*1024] I see a change from 756 to 1782

我认为这与虚拟内存是什么有关:https://serverfault.com/a/138435可能会有所帮助。我不认为分配一个数组甚至malloc()会给你程序实例所分配的实际内存。我还会在这里查看答案:https://stackoverflow.com/a/1237930/1767191,它建议您使用/proc/self/smaps,根据proc man的说法,它是shows memory consumption for each of the process's mappings.。这意味着它将为每个实例提供内存消耗。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16424472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档