如何衡量Linux中应用程序或进程的内存使用情况?

在博客文章《了解Linux上的内存使用情况》中,ps并不是一个准确的工具。

为什么ps是“错误的”根据您的看法,ps不会报告进程的实际内存使用情况。它真正要做的是显示如果只有一个进程在运行,每个进程将占用多少实际内存。当然,一台典型的Linux机器在任何给定时间都有几十个进程在运行,这意味着ps报告的VSZ和RSS数字几乎肯定是错误的。

(注:这里详细介绍了这个问题。)


当前回答

这里再次投票支持Valgrind,但我想补充一点,您可以使用Alleyoop这样的工具来帮助您解释Valgrind生成的结果。

我一直使用这两种工具,并且总是有简洁、无泄漏的代码来自豪地展示它;)

其他回答

我建议您使用top。你可以在这个页面上找到关于它的一切。它能够为您的流程提供所有必要的KPI,还可以捕获到文件中。

没有任何简单的计算方法。但有些人试图得到一些好的答案:

ps_mem.pyGitHub上的ps_mem.py

/prox/xxx/numa_maps提供了一些信息:N0=???N1=???。但这个结果可能低于实际结果,因为它只计算那些被触摸过的对象。

我正在使用htop;这是一个非常好的控制台程序,类似于Windows任务管理器。

去找Valgrind。让它运行你的程序,它会告诉你它的内存使用情况。

这只适用于程序运行一段时间并停止的情况。我不知道Valgrind是否能够控制一个已经运行的进程,或者不应该停止的进程,比如守护进程。