我在 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