默认用top看内存需重点关注res和%mem,而非virt;按m键排序、c键展开命令行可准确定位高内存进程;结合mib mem行中avail值与swap使用情况判断是否真缺内存。

直接输入 top 启动后,默认就能看到每个进程的内存占用百分比(%MEM 列),但要准确识别高内存消耗进程,关键不在“看到”,而在“看懂字段”和“快速聚焦”。
重点看 RES 和 %MEM,别被 VIRT 带偏
VIRT 是虚拟内存总量,含未实际使用的申请空间和共享库,数值大不代表真占内存。真正反映物理内存消耗的是 RES(常驻内存,单位 KiB)和它换算出的 %MEM(占总可用物理内存的百分比)。比如一个 Java 进程 VIRT 2.1G,但 RES 只有 480M、%MEM 3.2%,说明它实际只用了不到 500MB 物理内存。
计算单个进程真实独占内存可参考:RES − SHR(共享内存)。若 RES 高而 SHR 也高,可能是多个进程共用同一套库,未必是单一进程问题。
按内存排序 + 显示完整命令,避免误判
启动 top 后,立刻按 M 键(大写),列表即按 %MEM 从高到低排列,顶部几行就是当前内存大户。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
接着按 c 键,COMMAND 列会展开为完整命令行(含路径和参数)。否则你可能看到一堆 “java”,根本分不清哪个是 Kafka、哪个是 Spring Boot 应用、哪个在跑离线任务。
如果想只关注某用户(如 www-data)或某几个 PID,启动时加参数更干净:
top -u www-data
top -p 1234,5678,9012
结合内存摘要,判断系统是否真的缺内存
顶部的 MiB Mem 行比进程列表更重要:
- free 值很低,但 avail Mem(可用内存)仍充足 → 不必紧张,Linux 会积极使用空闲内存做缓存;
- avail Mem 明显低于物理内存总量,且 Swap used 开始增长 → 内存已吃紧,OOM Killer 可能随时介入;
- 发现某个进程 RES 持续上涨、%MEM 超过 20% 且无回落 → 很可能是内存泄漏,需结合 jstat(Java)或 pstack 进一步分析。
进阶技巧:冻结刷新、保存配置、导出快照
排查瞬时峰值时,按 s 键把刷新间隔设为 1 秒;怀疑是偶发问题,可按 W 保存当前视图偏好(排序方式、显示列等),下次启动自动生效。
需要留档或发给同事复现?用批处理模式导出:
top -b -n 1 > mem-snapshot.txt
这会生成一份纯文本快照,含完整内存摘要和进程列表,适合嵌入报告或对比分析。










