如何找出程序占用多少内存

Jjd*_*elc 8 memory top

我使用 htop 来观察我的进程,但大多数运行的服务都是多线程的,所以它们显示在多行中,并带有内存使用百分比,在某些情况下,所有服务都相同,有时它们之间会有所不同。

以 Firefox 为例,它可以列出 15 个进程,每个进程消耗 13% 的内存。

我可以知道 Firefox、MySQL、某些 fcgi 脚本或任何正在消耗的 hoc 内存吗?因为 htop 输出似乎具有误导性。

Gil*_*il' 6

大多数顶级实现都有打开或关闭线程显示的方法。

  • htop:在“设置/显示选项”菜单中,“隐藏用户线程”。
  • Linux top:按下H可切换线程的显示(但默认情况下它们处于关闭状态)。
  • OpenBSD 顶部:按下T可切换线程的显示(但默认情况下它们是关闭的)。

请注意,内存映射以及内存占用是进程的一个属性,因此您将始终看到进程中每个线程的相同数字。如果您看到不同的数字,则表示有多个进程。

没有简单的方法可以找出一组进程的总内存消耗,因为这个概念没有明确定义。一些内存可能是共享的;这在共享库中一直发生,此外相关进程(例如服务器的多个实例)更有可能使用共享内存来交换数据。如果您只是将数字相加,您通常会得到一个比实际使用的内存大得多的数字。