【问题标题】:Measurement of a c++ app's maximum memory usage (stack and heap) with valgrind's massif使用 valgrind 的 massif 测量 c++ 应用程序的最大内存使用量(堆栈和堆)
【发布时间】:2017-06-19 23:10:30
【问题描述】:

我目前正在 Ubuntu 16.04 虚拟机上开发 C++ 应用程序。我需要测量应用程序(堆栈和堆)的总内存使用量,以找出它的最大值范围。由于我对内存分析很陌生,我最终使用 valgrind 如下:命令:

valgrind --tool=massif --stacks=yes  ./c++_app
ms_print massif.out.<PID>

在解码的文件中,我在相关图表上得到了 12.5 MB 的峰值。 另一方面,gnome-system-monitor 显示最大内存值为 25 MB。

我应该相信这两个结果中的哪一个?是否也应该与其他软件交叉检查内存使用情况?

【问题讨论】:

  • 您也可以尝试/usr/bin/time -v YourProgram查看最大驻留集。顺便说一句,您可能指的是MB(兆字节)而不是mb(毫秒)。
  • @Mark Setchell 正确我的意思是 MB(兆字节)。我会改正的。

标签: c++ valgrind massif


【解决方案1】:

这两个结果可能都是正确的。 Massif 配置文件堆和可能堆栈。 另一方面,系统监视器提供有关总内存使用情况的信息,包括运行映像的大小(还包括静态数据内存)。

对于您的问题,您应该依赖地块结果。

【讨论】:

  • 系统监视器提供的数字还将包括 massif 的内部簿记作为开销。
猜你喜欢
  • 2020-05-27
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2018-08-01
相关资源
最近更新 更多