温馨提示×

linux进程如何查看内存

小樊
43
2026-07-10 06:12:00
栏目: 智能运维

在 Linux 中查看进程内存使用情况有多种方式,下面按常用程度场景给你总结一下,从简单到专业。


一、最常用:top / htop(实时查看)

1️⃣ top

top
  • 查看所有进程
  • M 按内存排序
  • 关键字段:
    • RES:实际占用物理内存(KB)
    • VIRT:虚拟内存
    • %MEM:内存占用百分比

查看指定进程:

top -p PID

2️⃣ htop(推荐,更友好)

htop
  • 颜色显示
  • 支持鼠标
  • 排序更直观(F6)

安装:

# Ubuntu / Debian
sudo apt install htop

# CentOS / RHEL
sudo yum install htop

二、查看某个进程:ps(最常用)

查看指定进程内存

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

示例:

ps -p 1234 -o pid,vsz,rss,comm

字段说明:

  • VSZ:虚拟内存(KB)
  • RSS:实际物理内存(KB)

查看内存占用最高的进程

ps aux --sort=-rss | head

三、最详细:/proc/PID/status(强烈推荐)

查看某个进程

cat /proc/PID/status

重点关注:

VmRSS:      内存实际占用
VmSize:     虚拟内存
VmSwap:     使用的 swap

示例:

cat /proc/1234/status | grep Vm

四、查看内存映射:pmap(分析内存分布)

pmap -x PID

输出示例:

Address   Kbytes  RSS  Dirty  Mode  Mapping

适合分析:

  • 内存泄漏
  • 共享库占用
  • 堆 / 栈分布

五、进程到底“吃了多少内存”?(重点说明)

⚠️ Linux 内存是共享的

  • 多个进程共享 libc、libstdc++ 等
  • RSS ≠ 实际独占内存

更准确指标:

/proc/PID/smaps

查看 PSS(Proportional Set Size):

grep Pss /proc/PID/smaps | awk '{sum+=$2} END {print sum}'

PSS 是判断进程真实内存占用的最佳指标


六、快速对比总结

方法 适合场景 推荐指数
top / htop 实时查看 ⭐⭐⭐⭐⭐
ps 脚本 / 快速查看 ⭐⭐⭐⭐
/proc/PID/status 精确分析 ⭐⭐⭐⭐⭐
pmap 内存分布 ⭐⭐⭐⭐
smaps + PSS 内存泄漏 ⭐⭐⭐⭐⭐

七、常见面试 / 实战问题

RSS 和 VSZ 的区别?
为什么 top 看到的内存加起来 > 实际内存?
如何判断进程是否有内存泄漏?

如果你愿意,我可以:

  • 给你一个实战排查内存泄漏流程
  • 或针对 Java / Go / C++ 进程单独讲内存查看方式

0