我使用 htop 来监视我的进程,但运行的大多数服务都是多线程的,因此它们显示在几行上,并带有内存使用百分比,在某些情况下对于所有服务都是相同的,有时它们之间有所不同。
以 Firefox 为例,它可以列出 15 个进程,每个进程消耗 13% 的内存。
我能知道 Firefox、MySQL、某些 fcgi 脚本或其他东西占用了多少内存吗?因为 htop 输出似乎具有误导性。
答案1
大多数顶级实现都有一种打开或关闭线程显示的方法。
- htop:在“设置/显示选项”菜单中,“隐藏用户区线程”。
- Linux top:按下
H
可切换线程的显示(但默认情况下它们是关闭的)。 - OpenBSD 顶部:按下
T
可切换线程的显示(但默认情况下它们是关闭的)。
请注意,内存映射以及内存占用是进程的一个属性,因此您始终会看到进程中每个线程的相同数字。如果您看到不同的数字,则意味着有多个进程。
没有简单的方法可以找出一组进程的总内存消耗,因为这个概念没有明确定义。有些内存可能是共享的;这种情况在共享库中经常发生,此外相关进程(例如服务器的多个实例)更有可能使用共享内存来交换数据。如果您只是将数字相加,您通常会得到一个比实际使用的内存大得多的数字。