# procrank PID Vss Rss Pss Uss Swap PSwap USwap ZSwap cmdline 1546 23119064K 434772K 246374K 221424K 26896K 25795K 25776K 8547K system_server 2195 18248184K 348776K 180992K 166788K 27548K 26431K 26412K 8758K com.android.systemui ... 1108 10797196K 3268K 65K 44K 648K 648K 648K 214K /system/bin/thermald ------ ------ ------ ------ ------ ------ ------ 1850510K 1456516K 699812K 624553K 620960K 206964K TOTAL ZRAM: 208520K physical used for 629248K in swap (4194300K total swap) RAM: 10989740K total, 343872K free, 10312K buffers, 7536160K cached, 20688K shmem, 487084K slab
1. VSS:
Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已经申请但尚未使用的内存空间。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。
此大小还包括可能不驻留在RAM中的内存,如已分配但未写入的malloc。 VSS对于确定进程的实际内存使用非常少用。
2. RSS:
Resident Set Size 实际使用物理内存(包含共享库占用的内存)
表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。
RSS可能会产生误导,因为它报告进程使用的所有共享库的总数,即使共享库只加载到内存中一次,无论有多少进程使用它。 RSS也不是单个进程的内存使用的准确表示。
3. PSS:
Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。这种方式表示进程的内存使用情况较准确,但当只有一个进程使用共享库时,其情况和RSS一模一样。
当一个进程被销毁时,其占用的那部分PSS又会被按比例地分配给其余使用这些库的进程。
4. USS:
Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
表示一个进程本身占用的内存空间大小,不包含其它任何成分,这是表示进程内存大小的最好方式!
USS是一个非常有用的数字,因为它表示运行特定进程的真正内存增量成本。当进程被终止时,USS是实际返回到系统的总内存。 USS是判断进程中的内存泄漏时最值得注意的数字。
总结:
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS