温馨提示×

linux进程内存怎么查

小樊
62
2026-09-06 15:38:57
栏目: 智能运维

在 Linux 下查看进程内存占用,常用方法如下,按使用场景从简单到专业排列:


一、最常用:top / htop

1️⃣ top

top

找到目标进程,关注这些列:

  • VIRT:虚拟内存(包含未实际使用)
  • RES:常驻内存(实际占用的物理内存)✅重点看这个
  • SHR:共享内存

Shift + M 可按内存排序。

2️⃣ htop(更友好)

htop
  • RES 列就是真实内存占用
  • 支持鼠标、颜色、树形结构

二、精准查看某个进程:ps

ps -p <PID> -o pid,comm,rss,vsz

示例:

ps -p 1234 -o pid,comm,rss,vsz
  • RSS:物理内存(KB)
  • VSZ:虚拟内存(KB)

查看所有进程按内存排序:

ps aux --sort=-rss

三、最详细:/proc//status

cat /proc/<PID>/status

重点字段:

VmRSS:   123456 kB   # 实际物理内存
VmSize:  234567 kB   # 虚拟内存
VmSwap:  0 kB        # 使用的 swap

四、更底层:/proc//smaps

查看内存分布细节(堆、栈、共享库等)

cat /proc/<PID>/smaps

统计 RSS 总和:

grep Rss /proc/<PID>/smaps | awk '{sum+=$2} END {print sum " kB"}'

五、专用工具

1️⃣ pmap(内存映射)

pmap -x <PID>

可以看到每个内存段的占用。

2️⃣ smem(按比例计算共享内存)

smem -p -c pid,name,usr,swap,uss,pss,rss
  • PSS:公平分摊后的内存(推荐分析用)
  • USS:进程独占内存

六、Java / 容器等特殊场景

  • Javajstat -gc <PID>jmap
  • Docker
docker stats
  • K8s
kubectl top pod

七、快速判断口诀

  • 看真实占用 → RES / RSS
  • 看虚拟地址空间 → VIRT / VSZ
  • 看公平内存 → PSS
  • 看独占内存 → USS

如果你有具体场景(比如:Java 进程、容器、内存泄漏、OOM),可以告诉我,我可以给你更针对性的命令和分析方法。

0