如何在 OSX 中获得程序的最大内存使用量

Posted

技术标签:

【中文标题】如何在 OSX 中获得程序的最大内存使用量【英文标题】:How do I get the max memory usage of my program in OSX 【发布时间】:2012-03-13 08:48:33 【问题描述】:

我用 c++ 编写了一个程序,用 Intels C++ 编译器编译它,并在 Mac OSX 下运行它。

我想分析程序的最大内存使用情况,我会使用什么工具?

我更喜欢命令行工具,用于编写脚本。

【问题讨论】:

【参考方案1】:

虽然我没有尝试过,但Valgrind Massif profiling tool 应该可以帮助做到这一点。从 Massif manual:

默认情况下,Massif 仅测量堆内存,即分配的内存 使用 malloc、calloc、realloc、memalign、new、new[] 和 其他几个。因此,Massif 报告的数字可能是 比 top 等工具报告的要小得多 测量程序在内存中的总大小。但是,如果您希望 测量程序使用的所有内存,您可以使用 --pages-as-heap=yes.

【讨论】:

是的。将valgrind doc link 添加到您的答案中。 有没有办法让 massif 工具返回执行的最大组合分配大小?在单独的文件中获取大量堆栈跟踪和示例数据似乎有点过头了。 不,看来您无论如何都必须收集分析数据,然后通过ms_print 对其进行解析以获得最大分配大小。

以上是关于如何在 OSX 中获得程序的最大内存使用量的主要内容,如果未能解决你的问题,请参考以下文章

分析 C 应用程序中的最大内存使用情况 - linux

C++。如何获得进程从一开始就分配的最大内存量?

如何检索使用中内存最密集的应用程序的名称?

在 mac osx 上的 Qt 4.7 中使用光栅图形会导致内存泄漏?

java 如何获得一个进程的内存使用情况,cpu运行的时间

内存溢出的解决方法