当执行ps命令时,可以看到类似如下输出

root@ubt20-server:/home/xxx/tmp/yyy# ps -aux|head -n 10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.6 103392 12444 ?        Ss   2月19   0:08 /sbin/init maybe-ubiquity
root           2  0.0  0.0      0     0 ?        S    2月19   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   2月19   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   2月19   0:00 [rcu_par_gp]

说明

  • RSS(Resident Set Size)表示该进程分配的占用RAM的内存大小,不包括交互分区内存,包括共享库占用的内存,栈内存,堆内存
  • VSZ(Virtual Memory Size)表示该进程分配的虚拟内存大小,包括进程可以访问的所有内存,包括交换分区,共享内存

例子

如果一个进程,程序的大小有 500K,链接的共享库大小有 2500K,堆栈内存共有 200K,其中 100K 进入了交换分区。 进程实际加载了共享库中的 1000K 的内容,以及自己程序的中的 400K 的内容。请问 RSS 和 VSZ 应是多少?

  • RSS: 400K(程序包加载) + 1000K(共享库加载) + 100K(堆栈加载) = 1500K
  • VSZ: 500K(程序包) + 2500K(共享库) + 200K(堆栈包括交换区) = 3200K