当执行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