您的位置:首页 >Linux如何查看进程占用的物理内存 区分RSS与VSS
发布于2026-05-04 阅读(0)
扫一扫,手机访问

在Linux系统里排查内存问题时,一个核心动作就是查看进程到底占用了多少物理内存。但这事儿吧,工具不少,概念也多,稍不留神就可能看错数字、误解含义。今天咱们就来理清几个关键工具和概念,特别是如何准确查看RSS,以及它和VSS到底有什么区别。
说到快速查看进程,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是更好的选择。在top界面里,直接按Shift + M就能按内存使用排序,默认显示的RES列就是RSS(单位同样是KB)。
htop的界面更友好,色彩也更丰富,但使用时得留个心眼:
htop的MEM%列显示的就是RSS占总物理内存的比例,很直观。但旁边的RES列默认不显示单位,容易让人困惑。如果不确定,可以按F2进入设置,在“Columns”里确认RES字段已启用,并记住它的值单位是KB。htop主要聚焦于物理内存(RSS),不直接显示虚拟内存大小(VSS),也没法按VSS排序。如果你需要对比VSS,还得回到ps或者/proc文件系统。htop时可能没有启用MEMORY_PERCENTAGE支持,这会导致MEM%一列始终显示为0。遇到这种情况,就只能相信RES列的数值了。想要最原始、最准确的数据?那就得去/proc文件系统里翻一翻。每个进程在/proc/[PID]/status文件中都暴露了其内存使用的详细底稿,这里的数据未经任何格式化或舍入,直接来自内核统计:
VmRSS,它就对应RSS,单位是KB;找到VmSize,它就对应VSS(Virtual Memory Size),单位也是KB。grep -E 'VmRSS|VmSize' /proc/1234/status(把1234换成目标进程的真实PID)就能快速提取这两个关键指标。这是一个非常常见的误解:看到某个进程RSS是500MB,就以为它独占了500MB物理内存。实际上并非如此:
libc这样的基础库,在物理内存里通常只保存一份,但所有用到它的进程,各自的RSS都会把这部分共享内存算进去。所以,简单地把所有进程RSS相加,得到一个远超物理内存的数字,一点也不奇怪。mmap映射的文件,如果是干净页(clean page),被换出到磁盘后,RSS会减少;但如果是脏页(dirty page),即使数据已写回磁盘,只要映射关系还在,RSS可能依然会计入。free -h输出的a vailable字段才更准确地反映了可用内存,因为它综合考虑了page cache、slab缓存、可回收的目录项等内核可释放的资源。简单总结一下:ps命令最直接查看RSS,单位为KB;/proc/PID/status中VmRSS最准确;RSS反映实际驻留物理内存,但含共享页,总和常超物理内存总量。
说到底,RSS和VSS的差别,不在于哪个数字更大,而在于它们从不同维度描述内存。VSS像是你规划建房的“土地总面积”,而RSS则是当前已经铺好砖、盖好楼的“实际建筑面积”。
所以,当你需要评估当前系统的真实内存压力,想知道物理内存被消耗了多少,应该紧盯RSS。而当你怀疑有内存泄漏——比如程序不断分配内存却迟迟不使用——在物理内存吃紧之前,VSS的异常增长就会成为第一个报警信号。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9