我正在使用 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,最后Enter。Q要退出时按 。
别忘了,“Linux 吞噬了我的 RAM!”。
答案3
使用top
命令。它会显示所有正在运行的进程列表,默认情况下按使用最多 CPU 的进程排序。如果您点击,shiftM它将改为按内存使用量排序。您会在列表顶部看到内存占用最高的进程。