按m键可使top以内存占用百分比(%mem)降序排列进程,需大写m(shift+m或caps lock),%mem为相对值,关注res列(kb)可获绝对内存用量;也可用top -o %mem直接启动即排序。

top运行中按M键以内存占用降序排列进程
启动top后默认按%CPU排序,想立刻看谁吃内存最多,直接按M(大写M,即Shift+M)即可。界面会瞬间按%MEM列从高到低重排,内存占用最高的进程顶在第一位。
注意:%MEM是相对值(占总物理内存百分比),容易受系统总内存大小影响;若需绝对数值参考,建议同步按c显示完整命令路径,并关注RES列(单位KB,代表实际驻留物理内存)。常见误操作是只按小写m——它没效果,必须是Shift+M或Caps Lock开启状态下的M。
用top -o %MEM启动即默认内存排序
如果每次都要手动按M太麻烦,可以直接用参数启动:top -o %MEM。这样一运行就按内存百分比降序,省去交互步骤,适合脚本化或快速检查场景。
几个关键点:
-
-o后面不能有空格,必须紧接字段名,写成top -o %MEM,不是top -o % MEM -
%MEM区分大小写,%mem或%Mem会报错或无效 - 该参数仅控制初始排序,进入交互模式后仍可随时按
P/M切换 - 若想按绝对内存(
RES)排序,top -o RES也有效,但RES单位是KB,数值大,排序逻辑和%MEM不同
按P键以CPU使用率重新排序进程
和内存排序同理,按P(Shift+P)可让top按%CPU列从高到低重排。这是最常用的操作之一,尤其当系统响应变慢、怀疑CPU瓶颈时。
要注意的是:%CPU是采样周期内的平均值,刷新间隔越短(如top -d 1),数值波动越大;默认3秒刷新更平滑。另外,多核CPU下单个进程%CPU可能超过100%,比如4核机器上最高可达400%,不代表异常。
排序后如何确认是否生效及避免误判
排序是否成功,最直接的验证方式是看顶部进程的%MEM或%CPU值是否明显高于其他行。但容易忽略的是:这些百分比基于当前采样时刻,且受缓存、共享内存(SHR)、虚拟内存(VIRT)干扰。
实用建议:
- 排序后立即按
c,避免因COMMAND截断误认进程(例如多个java或python难区分) - 观察
RES和%MEM是否同步升高,若%MEM高但RES很低,可能是进程刚启动、内存尚未实际分配 - 若发现某进程
%CPU持续100%但RES很低,大概率是计算密集型小进程(如grep扫大文件),不是内存泄漏 - 排序本身不改变进程状态,别误以为按了
M或P就“优化”了系统——它只是帮你更快定位问题源
真正卡点在于:排序只是第一步,后续得结合ps、/proc/PID/status或pstack/jstack进一步下钻,否则永远停在“知道谁高”而不是“为什么高”。











