文档首页> 互联网资讯> Linux查看内存:free/top精准定位高占用

Linux查看内存:free/top精准定位高占用

发布时间:2026-09-01 02:26       

linux查看内存

在 Linux 系统中,查看内存使用情况是系统运维、性能排查和服务器管理中非常常见的操作。内存资源直接影响程序运行效率,如果内存占用过高,可能会导致系统变慢、服务响应延迟,甚至触发 OOM 机制导致进程被杀死。因此,掌握常用的内存查看命令非常重要。

一、使用 free 查看内存概览

free 是最常用的内存查看命令,可以快速显示物理内存和交换分区的使用情况。

free -h

常用参数说明:

  • -h:以人类可读格式显示,例如 GB、MB。
  • -m:以 MB 为单位显示。
  • -g:以 GB 为单位显示。
  • -s 1:每隔 1 秒刷新一次。

示例输出中常见字段含义:

字段 含义
total 总内存
used 已使用内存
free 空闲内存
shared 多个进程共享的内存
buff/cache 缓存占用
available 实际可用内存

在 Linux 中,系统会把一部分空闲内存用作缓存,因此 free 很小不一定代表内存不足。更应关注 available 字段,它更能反映当前系统真正还能给程序使用的内存。

二、使用 /proc/meminfo 查看详细信息

/proc/meminfo 记录了系统内存的详细信息,适合需要深入分析时使用。

cat /proc/meminfo

常用关注项:

grep -E "MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree" /proc/meminfo

说明:

  • MemTotal:系统总内存。
  • MemFree:完全未被使用的内存。
  • MemAvailable:估计可用于启动新应用的内存。
  • Buffers:块设备缓冲区占用。
  • Cached:页缓存占用。
  • SwapTotal:交换分区总量。
  • SwapFree:剩余交换空间。

如果 SwapFree 持续减少,同时 MemAvailable 也很低,通常说明系统内存压力较大。

三、使用 top 查看进程内存占用

top 可以实时查看系统中各个进程的 CPU 和内存占用情况。

top

进入界面后,可以关注以下字段:

字段 含义
%MEM 进程占用物理内存百分比
RES 进程实际使用的物理内存
VIRT 进程虚拟内存大小
SHR 共享内存大小

top 中,可以按 M 键按照内存占用排序,方便快速找到占用内存最高的进程。

四、使用 ps 查看指定进程内存

如果只想查看某个进程或所有进程的内存占用,可以使用 ps 命令。

查看内存占用最高的前 10 个进程:

ps aux --sort=-%mem | head -n 11

查看指定进程的内存信息:

ps -p 进程ID -o pid,rss,vsz,%mem,cmd

常用字段说明:

  • RSS:常驻内存,表示进程实际占用的物理内存。
  • VSZ:虚拟内存大小。
  • %MEM:内存占用百分比。
  • CMD:进程启动命令。

五、使用 vmstat 查看内存和交换压力

vmstat 可以查看系统整体运行状态,包括内存、交换分区、CPU 等信息。

vmstat 1

重点字段:

字段 含义
si 每秒从 swap 读入内存的数据量
so 每秒从内存写入 swap 的数据量
bi 每秒从块设备读入的数据量
bo 每秒写入块设备的数据量
us 用户态 CPU 占用
sy 内核态 CPU 占用

如果 siso 持续较高,说明系统正在频繁使用 swap,可能存在内存不足的问题。

六、使用 pmap 查看进程内存分布

当某个进程内存占用异常时,可以使用 pmap 查看该进程的内存映射情况。

pmap -x 进程ID

如果想查看内存占用最多的映射段:

pmap -x 进程ID | sort -k3 -nr | head

这有助于分析某个程序到底占用了哪些类型的内存,例如堆内存、共享库、匿名内存等。

七、使用 smem 查看更准确的内存占用

普通命令中的 RSS 可能包含共享内存,因此多个进程会重复计算共享部分。smem 可以提供更合理的内存统计。

安装方式示例:

yum install smem
# 或
apt install smem

查看进程内存占用:

smem -r

按用户统计内存:

smem -u

常用字段:

  • USS:独占内存,更能反映进程真实内存成本。
  • PSS:按比例分摊共享内存后的占用。
  • RSS:常驻内存。

八、判断内存是否不足

查看 Linux 内存时,不要只看 free 数值。更合理的判断方式如下:

  1. 查看 free -h 中的 available
  2. 查看 vmstatsiso 是否持续升高。
  3. 查看 /proc/meminfoMemAvailable 是否明显偏低。
  4. 使用 topps 找出高内存占用进程。
  5. 检查是否存在内存泄漏或异常服务。

如果发现某个进程长期占用大量内存,可以进一步分析日志、重启服务或优化程序配置。

总结

Linux 查看内存的方法有很多,常用命令包括 freecat /proc/meminfotoppsvmstatpmapsmem。其中,free -h 适合快速查看整体情况,/proc/meminfo 适合查看详细指标,topps 适合定位高内存占用进程,vmstat 适合判断系统是否存在 swap 压力。实际使用中,应重点关注 availableMemAvailablesi/so 和进程 RSS/USS 等指标,综合判断系统内存状态。