如何找出哪些进程正在消耗所有内存

如何找出哪些进程正在消耗所有内存

我正在使用 SUSE,我有 31GB 内存。内存:总计 31908592k,已用 31429632k,可用 478960k,缓冲区 12176k。如何找出哪些进程占用了我的所有内存。

答案1

看起来你正在奔跑free,看着第一行,然后惊慌失措。没关系;很多人都这样做。

忽略第一行输出free。真的。Linux 是非常积极地从磁盘缓存数据,甚至包括“换出”的虚拟内存页面,在 RAM 中,并且所有缓存的数据在free第一行中都被视为“已使用”,尽管如果需要,它可以在一微秒内(或更短的时间)再次可用。

你需要看看第二输出行free,标记为-/+ buffers/cache:。该行将告诉您运行程序实际占用了多少内存,忽略缓冲区和缓存当前正在使用的内存。

例如我的机器目前显示:

             total       used       free     shared    buffers     cached
Mem:       3083924    2177300     906624          0     461344     837008
-/+ buffers/cache:     878948    2204976
Swap:      4000148          0    4000148

尽管目前完全未使用的 RAM 只有 906624 字节,但还有额外的 461344 字节缓冲区和 837008 字节缓存数据,如果有更重要的事情(即几乎任何事情)需要内存,它们可以或多或少立即可用,这样我实际上可用的内存总共为 2204976 字节。

答案2

运行top,然后按ShiftO,然后N,最后EnterQ要退出时按 。

别忘了,“Linux 吞噬了我的 RAM!”

答案3

使用top命令。它会显示所有正在运行的进程列表,默认情况下按使用最多 CPU 的进程排序。如果您点击,shiftM它将改为按内存使用量排序。您会在列表顶部看到内存占用最高的进程。

相关内容