【问题标题】:How to programatically get the memory usage of the current program?如何以编程方式获取当前程序的内存使用情况?
【发布时间】:2020-07-30 01:21:34
【问题描述】:

我想获得一些关于我的 C++ 程序的内存使用情况的信息。我这样做的方法是访问/proc/self/stat 并打印虚拟和驻留集大小。

你可以找到一个例子here

这是一个好方法吗?我访问的信息有多准确*?

有人可以推荐一种更好的方法来以编程方式测量内存使用情况吗?

*问,因为我得到了意想不到的,突然的内存使用跳跃。我的期望是信息完全准确。

操作系统:我在一个基于 RHEL 的 docker 容器中运行。

附加信息:如果我用docker run -m 限制容器的内存使用,则打印的内存大于我设置的限制。

【问题讨论】:

  • 非常依赖于操作系统,所以请edit您的问题明确说明(例如通过将其添加为标签)。
  • 这能回答你的问题吗? How to get memory usage at runtime using C++?
  • @usr 确实如此。那里的解决方案几乎就是我使用的。但是当我使用这种方法时,我得到了奇怪的结果。这就是为什么我一直在寻找更好的方法来做到这一点

标签: c++ linux memory rhel


【解决方案1】:

如何以编程方式获取当前程序的内存使用情况?

在 C++ 中没有标准的方法来获取程序的内存使用情况。

“内存使用”的概念本身有些模糊,可能意味着不同的东西。根据您的意思,可能有也可能没有特定于系统的方式来获取信息。

我这样做的方法是访问/proc/self/stat

这是一个好方法吗?

我不这么认为。据我所知, /proc 文件系统不可移植。在 POSIX 系统上使用 getrusage 函数。

【讨论】:

  • 非常感谢。我会调查的
  • OP 专门指定了 linux RHEL。所以也许便携性不是问题
猜你喜欢
  • 2017-09-01
  • 2013-05-05
  • 2013-08-29
  • 2011-11-05
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多