一般来说内存占用大小有如下规律:VSS>=RSS>=PSS>=USS
1、VSS - Virtual Set Size(用处不大)
虚拟耗用内存(包含共享库占用的全部内存,以及分配但未使用的内存)。其大小还包括了可能不在RAM中的内存(比如malloc分配了空间,但尚未写入)。VSS很少被用于判断一个进程的真实内存使用量。
2、RSS - Resident Set Size(用处不大)
实际使用物理内存(包含共享库占用的全部内存)。但是RSS还是可能会造成误导,因为它仅仅表示该进程所使用的所有共享库的大小,它不管有多少个进程使用该共享库,该共享库仅被加载到内存一次。所以RSS并不能准确反映单进程的内存占用情况。
3、PSS - Proportionnal Set Size(仅供参考)
实际使用的物理内存(比例分配共享库占用的内存,按照进程数等比例划分)。例如,如果有三个进程都使用了一个共享库,共占用三十页内存。那么PSS将认为每个进程分别占用改共享库十页的大小。PSS是非常有用的数据,因为系统中所有进程的PSS相加的话,就刚好反映了系统中的总共占用的内存。而当一个进程别销毁之后,其占用的共享库那部分比例的PSS,将会再次按比例分配给余下使用该库的进程。这样PSS可能会造成一些误导,因为当一个进程销毁的后,PSS不能准确的表示返回给全局系统的内存。
4、USS - Unique Set Size(非常有用)
进程独自占用的物理内存(不包含共享库占用的内存)。USS是非常有用的数据,因为它反映了运行一个特定进程真实的边际成本(增量成本)。当一个进程被销毁后,USS是真实返回给系统的内存。当进程中存在一个可疑的内存泄漏时,USS是最佳观察数据。