在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/USS四种形式,这四种形式首字母分别是Virtual/Resident/Proportional/Unique的意思。

  • VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

    VSS是单个进程全部可访问的地址空间,其大小可能包括还尚未在内存中驻留的部分。对于确定单个进程实际内存使用大小,VSS用处不大。

  • RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)

    RSS是单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。像libc这种大部头库文件,共享者很多,都算在一个进程头上不科学

  • PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

    PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。PSS计算更加科学,除了自己独占的内存,再加上分到的共享部分。

  • USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

    USS是单个进程私有的内存大小,即该进程独占的内存部分。USS揭示了运行一个特定进程在的真实内存增量大小。如果进程终止,USS就是实际被返还给系统的内存大小。USS在计算一个新加入的进程导致系统内存增量很有用处,因为共享部分已经存在,并不是由其导致的。

  综上,VSS >= RSS >= PSS >= USS

04-17 23:32