测量程序内存消耗的便捷工具

测量程序内存消耗的便捷工具

我在 Debian 上开发了 C 代码。我正在寻找一个程序来实时监控代码的内存消耗。我唯一关心的值是最大 RAM 消耗,即使程序被终止(例如通过 SIGKILL),它也应该保留该值。有人可以推荐一个方便的工具吗?

通常我使用top -p pidnumber,但它的输出延迟太多,如果我的程序被终止,它不会在结束前显示 RAM 消耗。

答案1

您可以使用 Valrind 工具 Massif。

valgrind --tool=massif prog

默认情况下,它会创建一个已用堆内存的图表,但它也可以显示已用的堆栈内存

valgrind --tool=massif --stacks=yes prog

Valgrind 往往会减慢程序的执行速度,因此如果您的应用程序运行时间较长,请注意。

有关 Massif 的更多信息,我推荐Valgrind 文档这非常好。

答案2

top您可以通过top -d delay按顶部的 或 来更改延迟s

要获取每秒的驻留大小:

while rss=$(ps -o rss= -p "${pid?}") && printf '\r%d' "$rss"; do
  sleep 1; done; echo

或者变得更有趣:

sp="/-\|"
while rss=$(ps -o rss=,args= -p "${pid?}") && printf '\r[%c]%s' "$sp" "$rss"; do
  sleep 0.5; sp=${sp#?}${sp%???}; done; echo

相关内容