本文全面介绍Linux下查看应用内存占用的方法,首先讲解ps、top等基础命令,助你快速定位内存大户;随后深入剖析/proc文件系统及smem等工具,分析内存映射与泄漏,通过从入门到精通的指南,帮助运维人员高效排查系统内存瓶颈。
在 Linux 系统运维和开发中,排查应用性能瓶颈时,最常见的问题之一就是“内存占用过高”,Linux 的内存管理机制与 Windows 略有不同,它采用虚拟内存机制,这使得单纯看“虚拟内存”往往会产生误导。
当我们想知道某个具体应用占用了多少内存时,应该使用哪些命令?如何解读那些数字?本文将为你详细介绍几种查看 Linux 应用内存占用的常用方法,并解释核心指标的含义。
交互式监控工具:top 和 htop
这是最直观、最常用的方法,适合实时监控。

-
使用
top命令: 启动top后,你将看到一个实时的进程列表,在默认界面中,关键列包括:%MEM:该进程占用的物理内存百分比。RES(Resident Size):常驻集大小,即进程实际占用的物理内存(RSS)。VIRT(Virtual Size):虚拟内存大小。
操作技巧: 按
P键可以按内存使用率从高到低排序,让你一眼看到谁在“吃”内存。 -
使用
htop命令(推荐):htop是top的增强版,拥有彩色显示和交互式操作。- 启动
htop。 - 使用方向键移动光标到目标进程。
- 按
F4(搜索) 输入进程名,按F5(树状图) 查看进程层级。
注意: 在
htop中,内存列通常显示为M(百分比) 和VIRT。 - 启动
快速查询命令:ps
如果你不需要实时监控,只想一次性查看某个进程的内存信息,ps 命令是最佳选择。
-
基本语法:
ps aux | grep [进程名]
或者使用
pgrep定位 PID 后查看:pgrep -a [进程名] # 先找到PID和名字 ps -p [PID] -o pid,ppid,user,%mem,rss,vsz,cmd
-
关键参数解读:
%MEM:进程使用的物理内存占总内存的百分比。RSS(Resident Set Size):这是最准确的指标,代表进程实际占用的物理内存。VSZ(Virtual Set Size):虚拟内存大小,包含了所有共享库的内存映射,数值通常比 RSS 大很多。
示例: 查看名为
nginx的进程内存:ps aux | grep nginx
输出中
RSS列的数值(单位通常是 KB)就是它实际占用的物理内存。
深度分析:pmap 命令
pmap (Process Map) 可以显示进程的内存映射信息,如果你需要知道一个进程到底把内存用在了哪里(是堆、栈、还是共享库),这个命令非常强大。
-
基本用法:
pmap -x [PID]
-x参数会以详细的格式显示大小(Kb)。 -
输出解读: 你会看到类似以下的列表:
00400000-00651000 r-xp 00000000 08:01 123456 /usr/bin/python37f8a3c000000-7f8a3c002000 rw-p 00000000 00:00 0 [heap]- `7f8a3d000000-7
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

