内存耗用:VSS/RSS/PSS/USS

内存耗用:VSS/RSS/PSS/USS

Terms

 

  • VSS - Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
  • RSS - Resident Set Size实际使用物理内存(包含共享库占用的内存)
  • PSS - Proportional Set Size实际使用的物理内存(比例分配共享库占用的内存)
  • USS - Unique Set Size进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS>= PSS >= USS

 

Overview

The aim of this post is toprovide information that will assist in interpreting memory reportsfrom various tools so the true memory usage for Linux processes andthe system can be determined.

Android has a toolcalled procrank (/system/xbin/procrank),which lists out the memory usage of Linux processes in order fromhighest to lowest usage. The sizes reported per process are VSS,RSS, PSS, and USS.

For the sake of simplicity inthis description, memory will be expressed in terms of pages,rather than bytes. Linux systems like ours manage memory in 4096byte pages at the lowest level.

VSS (reported as VSZ from ps)is the total accessible address space of aprocess. This size also includes memory that may not beresident in RAM like mallocs that have been allocated but notwritten to. VSS is of very little use for determing real memoryusage of a process.

RSS isthe total memory actually held in RAM for aprocess. RSS can be misleading, because it reports the totalall of the shared libraries that the process uses, even though ashared library is only loaded into memory once regardless of howmany processes use it. RSS is not an accurate representation of thememory usage for a single process.

PSS differs from RSS in thatit reports the proportional size of its shared libraries, i.e.if three processes all use a shared library that has 30 pages, thatlibrary will only contribute 10 pages to the PSS that is reportedfor each of the three processes. PSS is a very useful numberbecause when the PSS for all processes in the system are summedtogether, that is a good representation for the total memory usagein the system. When a process is killed, the shared libraries thatcontributed to its PSS will be proportionally distributed to thePSS totals for the remaining processes still using that library. Inthis way PSS can be slightly misleading, because when a process iskilled, PSS does not accurately represent the memory returned tothe overall system.

USS is thetotal private memory for a process, i.e. that memory that iscompletely unique to that process. USS is an extremely usefulnumber because it indicates the true incremental cost of running aparticular process. When a process is killed, the USS is the totalmemory that is actually returned to the system. USS is the bestnumber to watch when initially suspicious of memory leaks in aprocess.

For systems that have Pythonavailable, there is also a nice tool called smem that will reportmemory statistics including all of these categories.

# procrank
procrank
PID     Vss     Rss     Pss     Uss cmdline
481  31536K  30936K  14337K    9956Ksystem_server
475  26128K  26128K  10046K    5992Kzygote
526  25108K  25108K   9225K    5384Kandroid.process.acore
523  22388K  22388K   7166K    3432Kcom.android.phone
574  21632K  21632K   6109K    2468Kcom.android.settings
521  20816K  20816K   6050K    2776Kjp.co.omronsoft.openwnn
474   3304K   3304K   1097K    624K /system/bin/mediaserver
37    304K    304K    289K    288K /sbin/adbd
29    720K    720K    261K    212K /system/bin/rild
601    412K    412K    225K    216K procrank
     204K    204K    185K    184K /init
35    388K    388K    182K    172K /system/bin/qemud
284    384K    384K    160K    148K top
27    376K    376K    148K    136K /system/bin/vold
261    332K    332K    123K    112K logcat
33    396K    396K    105K     80K /system/bin/keystore
32    316K    316K    100K     88K /system/bin/installd
269    328K    328K     95K     72K /system/bin/sh
26    280K    280K     93K     84K /system/bin/servicemanager
45    304K    304K     91K     80K /system/bin/qemu-props
34    324K    324K     91K     68K /system/bin/sh
260    324K    324K     91K     68K /system/bin/sh
600    324K    324K     91K     68K /system/bin/sh
25    308K    308K     88K     68K /system/bin/sh
28    232K    232K     67K     60K /system/bin/debuggerd
#


http://processors.wiki.ti.com/index.php/Android_Memory_Analysis

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页