获取进程内存消耗这个问题是关于获取正在运行的程序的内存使用情况。我需要知道程序完成后使用了多少 RAM。
假设我正在用这个命令编译一个 C++ 程序g++ main.cpp
。我需要知道它完成后使用了多少内存。或者,如果只能在特定时刻测量内存,我需要知道编译程序时的最大 RAM 使用量是多少。
对于我传递给的任何程序/usr/bin/time -f "%M"
,我都会得到最大驻留值 0。我确信我的程序使用了 GB 的内存
答案1
运行下面的程序/usr/bin/time
并查看最大驻留值。您需要指定完整路径以避免使用更简单的内置时间命令。
答案2
我总是用以下方法测试我的代码瓦尔格林德。
运行你的代码
valgrind --leak-check=yes --track-origins=yes ./a.out
它提供了有关内存消耗(分配/释放)的良好输出,但要做好运行速度非常慢的准备。
使用-G编译时的标志将帮助 valgrind 提供有关哪些行可能泄漏内存的信息。(额外待遇)
随意检查其他 valgrind 参数以获取更多输出。对我来说这两个就足够了。
答案3
除了修改内核或在某种记录其内存使用情况的包装器中运行正在调查的程序之外,最好的选择是采纳链接问题答案中给出的建议。