virt 表示进程申请的全部虚拟内存,含未使用部分;res 表示实际驻留物理内存的大小(kb),是判断真实内存压力的关键指标。

直接用 top 就能看清进程的虚拟内存(VIRT)和物理内存(RES),关键是要理解字段含义并正确调出所需列。
看懂 VIRT 和 RES 的区别
VIRT 是进程“申请”的全部虚拟地址空间,包括已分配但未使用的内存、共享库、映射文件等。它不代表真实占用,比如 Java 进程常显示几个 GB,实际未必用这么多。
RES 是进程当前真正驻留在物理内存中的部分(单位 KB),不含已被换出到 swap 的内容,更接近真实内存压力。一个进程实际占多少物理内存,主要看 RES,再减去共享部分(SHR)会更准确。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
让 top 显示 VIRT 和 RES 列
启动 top 后,默认就包含 VIRT 和 RES,但如果被隐藏了,可以按 f 键进入字段管理界面:
- 用方向键上下移动,找到 VIRT 和 RES
- 按空格键勾选它们(旁边出现 * 表示已启用)
- 按 q 退出设置,列表就会显示这两列
也可顺手勾选 SWAP 和 SHR,方便综合判断内存使用质量
按内存占用排序快速定位大内存进程
想一眼找出吃内存最多的进程:
- 运行 top 后,直接按 M(大写)键,按 %MEM 降序排列
- 或按 Shift + M(有些终端需配合 Caps Lock),效果相同
- 此时 RES 值高的进程会排在最上面,结合 VIRT 可判断是“真占内存”还是“只申请不使用”
批量查看或脚本化提取
如果不想进交互界面,可用命令一次性输出关键字段:top -b -n1 | head -20 | grep java —— 查看前 20 行中含 java 的进程top -o %MEM -b -n1 | awk 'NR>7 {print $1,$5,$6,$9,$10}' | head -10 —— 按内存排序,打印 PID、VIRT、RES、%CPU、%MEM 前 10 行










