理解 Linux 内存 VSS RSS PSS USS
VSS : Virtual Set Size 虚拟耗用内存(包含共享库占用的内存),即单个进程全部可访问的地址空间,其大小可能包括还尚未在内存中驻留的部分。对于确定单个进程实际内存使用大小,VSS用处不大。
RSS : Resident Set Size 实际使用物理内存(包含共享库占用的内存),即单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。
PSS : Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。
USS : Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)即单个进程私有的内存大小,即该进程独占的内存部分。USS揭示了运行一个特定进程在的真实内存增量大小。如果进程终止,USS就是实际被返还给系统的内存大小。
一般情况下有:VSS >= RSS >= PSS >= USS
进程VSS = 进程分配的内存 + 共享库所占的内存
进程RSS = 进程正在使用的内存 + 共享库所占的内存
进程PSS = 进程正在使用的内存 + (共享库所占的内存 / 共享库的进程个数)
进程USS = 进程正在使用的内存
有一个叫做 smem 的工具,它能报告内存以上分类的统计信息,如下图所示。