在 Ubuntu 上排查“进程占用内存高”的问题,可以从看现象 → 定位进程 → 分析内存类型 → 进一步诊断一步步来。
freefree -h
关注:
used 高不高available 是否很小buff/cache 是否很大(这部分通常可回收)top / htoptop
# 或
htop
RES(实际物理内存)和 VIRT(虚拟内存)安装 htop(更好用):
sudo apt install htop
ps aux --sort=-%mem | head
字段说明:
%MEM:占用物理内存百分比RSS:实际使用的内存(KB)cat /proc/<PID>/status
重点看:
VmRSS:实际物理内存VmSize:虚拟内存Threads:线程数(线程多也会吃内存)Linux 会把空闲内存用于 buffer/cache:
free -h
如果 available 还很大,一般不用慌。
清理缓存(不建议随便用):
sudo sync && sudo sysctl vm.drop_caches=3
多个进程可能共享同一段内存(如 libc、数据库)。
查看:
smem -t
安装:
sudo apt install smem
pmap -x <PID>
可看到:
valgrindvalgrind --tool=memcheck ./your_program
jstat -gc <PID>
pip install memory_profiler
✅ 是否在跑:
✅ 是否:
ps -eo pid,ppid,cmd,%mem,rss --sort=-%mem | head
如果你愿意,可以告诉我:
我可以给你更针对性的排查方案。