按m键可按%mem实时降序排列进程,%mem是进程rss占系统总物理内存(mib mem→total)的百分比,反映真实物理内存占用;需区分virt、res和shr,结合available判断内存压力。

直接运行 top 命令,再按 M 键,就能按内存实际占比(%MEM)实时降序排列进程。这个百分比是该进程占用的物理内存(RSS)占系统总可用内存(MiB Mem → total)的比例,不是虚拟内存或缓存部分。
怎么看内存实际占比?
启动 top 后,关注两处关键信息:
-
顶部概览区的
MiB Mem行:显示total/used/free/buff/cache/available。其中available是真正可被新进程使用的内存(已扣除缓存中可回收部分),%MEM的分母就是total,但实际反映的是对物理内存的真实压力; -
进程列表中的
%MEM列:数值代表该进程的 RSS(常驻内存集,即实际占用的物理内存页)占系统总物理内存(MiB Mem → total)的百分比。例如,一台 8 GiB 内存的机器,某进程%MEM = 12.5,说明它占用了约 1 GiB 物理内存; - 注意区分
VIRT(虚拟内存总量)、RES(即 RSS,等同于 %MEM 的计算基础)和SHR(共享内存,如库代码),只有RES是独占的、不可被其他进程复用的物理内存。
快速定位内存大户
在 top 运行中,有几种高效方式聚焦高内存进程:
- 按 M 键:立即按
%MEM降序排列,顶部就是当前内存占用最高的进程; - 启动时直接按内存排序:
top -o %MEM(Linux)或top -sort memusage(macOS); - 结合用户过滤:比如只看某个用户的内存消耗,运行
top -u username,再按 M; - 想看更清晰的列宽和字段,可按 f 进入字段管理界面,确保
%MEM、RES、COMMAND处于启用状态。
避免常见误解
%MEM 反映的是“此刻”该进程独占的物理内存比例,但它不等于内存泄漏的直接证据。需结合其他指标判断:
- 如果
RES持续缓慢上涨且%MEM不断升高,同时TIME+增长缓慢,可能是内存泄漏; - 若
buff/cache占比极高但available仍充足,%MEM高的进程未必真造成压力——Linux 会主动用空闲内存做缓存,这部分可随时回收; -
available接近 0 或free长期极低,同时%MEM总和接近 100%,才表明物理内存真正紧张,可能触发 OOM killer。
需要线程级内存查看?
默认 top 显示进程级汇总。若某进程多线程且怀疑某线程吃内存,可切换到线程视图:
- 按 H 键,将进程列表切换为线程列表(此时 PID 列显示的是线程 ID,即 LWP);
- 再按 M,即可按各线程的内存占用排序;
- 配合
-p PID使用更精准:例如top -H -p 1234只监控 PID 为 1234 的进程及其全部线程。











