Linux如何查看进程占用的物理内存 区分RSS与VSS
Linux如何查看进程占用的物理内存 区分RSS与VSS

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
在Linux系统里排查内存问题时,一个核心动作就是查看进程到底占用了多少物理内存。但这事儿吧,工具不少,概念也多,稍不留神就可能看错数字、误解含义。今天咱们就来理清几个关键工具和概念,特别是如何准确查看RSS,以及它和VSS到底有什么区别。
ps 命令看 RSS 最直接,但要注意单位和默认字段
说到快速查看进程,ps命令绝对是首选。它能迅速拉出一份清单,但关键是要知道,默认的输出里可没有我们最关心的“实际驻留物理内存”这项。你需要明确指定RSS(Resident Set Size)字段:
- 试试
ps aux --sort=-rss:这个组合拳能按RSS从大到小排序,一目了然哪个进程最“吃”内存。记住,这里RSS列的单位是KB,可别当成字节或者MB了。 - 想要更定制化的信息?用
ps -eo pid,ppid,cmd,%mem,rss --sort=-rss。这样你就能同时看到进程ID、父进程、执行命令、内存占用百分比以及具体的RSS值。 - 这里有个细节:
%mem这个百分比,是基于系统总物理内存计算的,但它不考虑交换分区(swap)和内核占用的内存。所以,把所有进程的%mem加起来,很可能还不到100%,这属于正常现象。
top 和 htop 显示 RSS 更直观,但 htop 默认不标单位
如果你喜欢动态刷新的视图,top和htop是更好的选择。在top界面里,直接按Shift + M就能按内存使用排序,默认显示的RES列就是RSS(单位同样是KB)。
htop的界面更友好,色彩也更丰富,但使用时得留个心眼:
htop的MEM%列显示的就是RSS占总物理内存的比例,很直观。但旁边的RES列默认不显示单位,容易让人困惑。如果不确定,可以按F2进入设置,在“Columns”里确认RES字段已启用,并记住它的值单位是KB。htop主要聚焦于物理内存(RSS),不直接显示虚拟内存大小(VSS),也没法按VSS排序。如果你需要对比VSS,还得回到ps或者/proc文件系统。- 另外,某些Linux发行版在编译
htop时可能没有启用MEMORY_PERCENTAGE支持,这会导致MEM%一列始终显示为0。遇到这种情况,就只能相信RES列的数值了。
/proc/PID/status 里找 VmRSS 和 VmSize,这是最准的来源
想要最原始、最准确的数据?那就得去/proc文件系统里翻一翻。每个进程在/proc/[PID]/status文件中都暴露了其内存使用的详细底稿,这里的数据未经任何格式化或舍入,直接来自内核统计:
- 找到
VmRSS,它就对应RSS,单位是KB;找到VmSize,它就对应VSS(Virtual Memory Size),单位也是KB。 - 例如,用命令
grep -E 'VmRSS|VmSize' /proc/1234/status(把1234换成目标进程的真实PID)就能快速提取这两个关键指标。 - 这里清晰地揭示了VSS和RSS的本质区别:VSS衡量的是进程整个虚拟地址空间的“地图面积”,包括代码段、数据段、共享库、已分配但未实际使用的内存(比如malloc后还没写入的区域)、内存映射的文件等等。只要被映射了,就算还没加载进物理内存,也会计入VSS。
- 而RSS仅仅是VSS中当前真正“驻扎”在物理内存(RAM)里的那一部分。不过要注意,RSS包含了共享内存页(比如多个进程共用的libc库),这就是为什么把所有进程的RSS加起来,总和常常会超过物理内存总量。
别把 RSS 当“进程独占内存”,共享页和缓存会让它失真
这是一个非常常见的误解:看到某个进程RSS是500MB,就以为它独占了500MB物理内存。实际上并非如此:
- 共享库是“失真”的主要原因。像
libc这样的基础库,在物理内存里通常只保存一份,但所有用到它的进程,各自的RSS都会把这部分共享内存算进去。所以,简单地把所有进程RSS相加,得到一个远超物理内存的数字,一点也不奇怪。 - 文件映射的内存行为也会影响RSS。通过
mmap映射的文件,如果是干净页(clean page),被换出到磁盘后,RSS会减少;但如果是脏页(dirty page),即使数据已写回磁盘,只要映射关系还在,RSS可能依然会计入。 - 正因为RSS包含了这些不一定能立刻回收的部分,所以你不能简单地用“总内存减去所有进程RSS之和”来估算可用内存。命令
free -h输出的a vailable字段才更准确地反映了可用内存,因为它综合考虑了page cache、slab缓存、可回收的目录项等内核可释放的资源。
简单总结一下:ps命令最直接查看RSS,单位为KB;/proc/PID/status中VmRSS最准确;RSS反映实际驻留物理内存,但含共享页,总和常超物理内存总量。
说到底,RSS和VSS的差别,不在于哪个数字更大,而在于它们从不同维度描述内存。VSS像是你规划建房的“土地总面积”,而RSS则是当前已经铺好砖、盖好楼的“实际建筑面积”。
所以,当你需要评估当前系统的真实内存压力,想知道物理内存被消耗了多少,应该紧盯RSS。而当你怀疑有内存泄漏——比如程序不断分配内存却迟迟不使用——在物理内存吃紧之前,VSS的异常增长就会成为第一个报警信号。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Linux如何查看进程占用的物理内存 区分RSS与VSS
Linux如何查看进程占用的物理内存 区分RSS与VSS 在Linux系统里排查内存问题时,一个核心动作就是查看进程到底占用了多少物理内存。但这事儿吧,工具不少,概念也多,稍不留神就可能看错数字、误解含义。今天咱们就来理清几个关键工具和概念,特别是如何准确查看RSS,以及它和VSS到底有什么区别。
Linux怎么安装Jenkins并配置Java环境 Linux自动化部署实战详解
Linux怎么安装Jenkins并配置Ja va环境 Linux自动化部署实战详解 在CentOS 8或者Rocky Linux 8上部署Jenkins,第一步往往就决定了成败:ja va -version的输出必须是1 8,也就是JDK 8。如果版本不对,Jenkins要么启动失败,要么Web界面
Linux查看系统启动时间及运行时间 uptime命令详解
Linux系统启动时间:三种可靠查询方法与一个常见误区 在排查故障、分析性能或者单纯想知道服务器“活了多久”时,系统启动时间是个关键信息。但你知道吗?不同命令给出的结果,背后代表的意义可能截然不同。直接说结论:追求最快,用 uptime -s;追求最可靠,用 who -b;而默认的 uptime 命
如何解决 Win11 系统由于系统盘爆满导致的启动黑屏 紧急清理 C 盘方案
如何解决 Win11 系统由于系统盘爆满导致的启动黑屏 紧急清理 C 盘方案 如果你的 Windows 11 开机后直接黑屏,而之前又明显感觉到 C 盘已经“飘红”甚至完全塞满,那问题很可能就出在这里。系统关键文件没地方写、虚拟内存加载失败,或者引导程序运行异常,都会导致启动过程直接中断。别慌,下面
Linux如何通过命令行发送电子邮件 mailx配置【教程】
Linux命令行邮件发送:告别静默失败,搞定mailx的SMTP配置 很多朋友在Linux服务器上尝试用mail命令发邮件时,都遇到过同一个“幽灵”问题:命令执行了,没有报错,但邮件就是石沉大海,收件箱里永远等不到。问题根源其实很明确:直接使用mail命令向QQ、Gmail、163等外部邮箱发送,几
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

