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

46 篇文章 0 订阅
28 篇文章 0 订阅

Terms

 

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

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

Overview

本篇文章的目的是为了帮助理解从多种工具导出的关于Linux进程真实占用内存的报告。

Android 有一个叫做 procrank (/system/xbin/procrank)的工具,它可以从高到低地列出Linux进程的内存占用量 。 每个进程按大小可以分为 VSS, RSS, PSS, 和USS.

 

为了简化描述,以下内存将以“页”的形式来表示,而不是“字节”。像我们的Linux系统内存管理中最低级别的页有4096 字节。

 

VSS (reported as VSZ from ps) 是一个进程总共可访问的地址空间。其大小还包括了可能不在RAM中的内存(比如虽然malloc分配了空间,但尚未写入)。 VSS 很少被用于判断一个进程的真实内存使用量。

 

RSS 是一个进程在RAM中真实存储的总内存。但是RSS还是可能会造成误导,因为它仅仅表示该进程所使用的所有共享库的大小,它不管有多少个进程使用该共享库,该共享库仅被加载到内存一次。所以RSS并不能准确反映单进程的内存占用情况。 

 

PSS 与RSS不同,它按比例表示使用的共享库, 例如:如果有三个进程都使用了一个共享库,共占用了30页内存。那么PSS将认为每个进程分别占用该共享库10页的大小。 PSS是非常有用的数据,因为系统中所有进程的PSS都相加的话,就刚好反映了系统中的总共占用的内存。 而当一个进程被销毁之后, 其占用的共享库那部分比例的PSS,将会再次按比例分配给余下使用该库的进程。这样PSS可能会造成一点的误导,因为当一个进程被销毁后,PSS不能准确地表示返回给全局系统的内存(the memory returned to the overall system)。

 

USS 是一个进程所占用的私有内存。即该进程独占的内存。 USS是非常非常有用的数据,因为它反映了运行一个特定进程真实的边际成本(增量成本)。当一个进程被销毁后,USS是真实返回给系统的内存。当进程中存在一个可疑的内存泄露时,USS是最佳观察数据。

 

如果系统支持Python, 有一个叫做smem的工具,它能报告内存以上分类的统计信息。 

PID     Vss     Rss     Pss     Uss     cmdline
481     31536K     30936K     14337K     9956K     system_server
475     26128K     26128K     10046K     5992K     zygote
526     25108K     25108K     9225K     5384K     android.process.acore
523     22388K     22388K     7166K     3432K     com.android.phone
574     21632K     21632K     6109K     2468K     com.android.settings
521     20816K     20816K     6050K     2776K     jp.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
1         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
#
 

 

 

top  | grep app名称

ps  |  grep app名称

procrank | grep app名称

dumpsys meminfo app名称

前两个命令只能查到VSS RSS内存占用信息

而后面两个命令可以查出  PSS USS内存占用.

dumpsys meminfo 可以查出native和dalvik分别占用多少内存

dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。

dumpsys [Option]

               meminfo 显示内存信息

               cpuinfo 显示CPU信息

               account 显示accounts信息

               activity 显示所有的activities的信息

               window 显示键盘,窗口和它们的关系

               wifi 显示wifi信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值