`

How to read android dumpstate PROCRANK memory info

 
阅读更多

Running "adb shell procrank ":

root@android:/ # procrank                                                      
  PID      Vss      Rss      Pss      Uss  cmdline
  291  119848K  102340K   59883K   44488K  system_server
  367   69460K   69020K   42641K   40928K  com.android.launcher
 2884   72216K   71844K   39865K   27524K  system_server
 1522   49812K   49676K   23367K   21980K  com.android.settings
 2536   47792K   47640K   21599K   20444K  com.sec.android.app.music


Column Name Meaning
VSS Virtual Set Size: how much virtual memory associated with process
RSS Resident Set Size: how much physical pages allocated for the process. Pages shared between processes are counted multiple times
PSS Proportional Set Size. Take the RSS number but evenly distribute shared pages among the sharing processes. For example, if three processes are sharing 3MB, each process gets 1MB in PSS.
USS Also known as Private Dirty, which is basically the amount of RAM inside the process that can not be paged to disk (it is not backed by the same data on disk), and is not shared with any other processes.



Reference: How to discover memory usage of my application in Android

 

 

 

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 to provide information that will assist in interpreting memory reports from various tools so the true memory usage for Linux processes and the system can be determined.

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

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

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

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

PSS differs from RSS in that it reports the proportional size of its shared libraries , i.e. if three processes all use a shared library that has 30 pages, that library will only contribute 10 pages to the PSS that is reported for each of the three processes. PSS is a very useful number because when the PSS for all processes in the system are summed together, that is a good representation for the total memory usage in the system. When a process is killed, the shared libraries that contributed to its PSS will be proportionally distributed to the PSS totals for the remaining processes still using that library. In this way PSS can be slightly misleading, because when a process is killed, PSS does not accurately represent the memory returned to the overall system.

USS is the total private memory for a process, i.e. that memory that is completely unique to that process . USS is an extremely useful number because it indicates the true incremental cost of running a particular process. When a process is killed, the USS is the total memory that is actually returned to the system. USS is the best number to watch when initially suspicious of memory leaks in a process.

For systems that have Python available, there is also a nice tool called smem that will report memory statistics including all of these categories.

# procrank
procrank
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
#

分享到:
评论

相关推荐

    android bugreport 分析

    4. **PROCRANK**:执行`/system/bin/procrank`命令,提供了一个按内存使用量排序的进程列表,有助于识别哪些进程占用了大量的系统资源。 5. **VIRTUALMEMORYSTATS**与**VMALLOCINFO**:这两个部分分别通过读取`/...

    android platform tools 工具,android sdk 必备

    Android平台工具是Android SDK不可或缺的一部分,它包含了开发者在构建、调试和发布Android应用程序时所需的各种命令行工具。这些工具在Android开发过程中起着至关重要的作用,不仅能够帮助开发者高效地管理项目,还...

    Android Framework 分析

    6. dumpstate 命令:android 系统调试辅助工具,生成可执行程式 dumpstate,建立两个程式 dumpcrash 和 bugreport 指向该程式。 7. dumpsys 命令:生成可执行程式 dumpsys。 8. ime 命令:IME 输入法 input method ...

    android框架分析

    这里包含了许多Android系统启动时使用的命令行工具,如`am`(Activity Manager)、`app_process`(Zygote进程的启动程序)、`backup`、`bmgr`(Backup Manager)、`bootanimation`(启动动画程序)、`dumpstate`、`...

    Android Framework 框架分析

    ### Android Framework 框架深度解析 Android Framework作为Android操作系统的核心组成部分,承载着连接底层硬件与上层应用程序的重要角色。它不仅提供了丰富的API供开发者调用,还负责管理各种系统服务,如进程...

    android log 分析 内含分析过程 转载

    首先,Android的日志系统主要包括五个级别:VERBOSE(V)、DEBUG(D)、INFO(I)、WARNING(W)、ERROR(E)和ASSERT(A)。开发者可以根据需要设置日志级别,以过滤无关或过于详尽的信息。在分析日志时,通常关注...

    Android Log分析

    在【描述】中提到的`dumpstate_app_anr.log`文件,是Android系统在应用无响应(ANR,Application Not Responding)时生成的一种特殊日志。当用户界面长时间未响应用户操作时,系统会捕捉当前状态并生成此文件,以便...

    Android LOG分析

    Android LOG分析 Android LOG 是 Android 系统中的一种重要日志记录机制,用于记录系统和应用程序的运行状态、错误信息和事件信息。 Android LOG 分类为实时打印的 LOG 和状态信息的 LOG。 实时打印的 LOG 主要...

    android Log分析教程及例子

    1. **日志级别与类型**:Android的日志系统支持五种不同的日志级别,包括`VERBOSE`、`DEBUG`、`INFO`、`WARN`和`ERROR`。开发者通常使用这些级别来控制日志输出的详细程度,`VERBOSE`是最详细的,而`ERROR`则表示...

    android log 文件分析实例

    在Android系统中,log文件是开发者诊断和调试应用问题的重要工具。本文将深入探讨如何分析一个名为`dumpstate_app_anr.log`的日志文件,它通常与ANR(Application Not Responding)错误有关,这是一种用户界面无响应...

    全志平台H313 H616安卓系统开发笔记.pdf

    本文档记录了Android系统开发的整个过程,从搭建Android开发环境到Android系统的架构、Android应用基础、Android系统基础、全志平台源码目录结构、Android启动流程、全志平台编译流程、系统调试方法、全志平台定制、...

    Android笔记之:App调试的几个命令的实践与分析

    在Android应用开发中,调试是不可或缺的一环,它能帮助开发者发现并修复代码中的问题。本文将介绍几个在Android中常用的App调试命令及其实践应用。 首先,`logcat`是Android开发者最熟悉的命令之一,用于查看设备或...

    android LOG 日志

    在Android开发中,日志(LOG)扮演着至关重要的角色,它可以帮助开发者诊断和解决应用程序中的问题。本文将通过一个具体的例子,即ANR(Application Not Responding)问题,来深入探讨如何利用LOG分析和解决Android...

    platform-tools.zip

    4. **hprof-conv**:这个工具用于转换Android设备上生成的.hprof内存分析文件,使其能被更广泛的分析工具如MAT(Memory Analyzer Tool)读取,从而帮助开发者分析内存泄漏和性能问题。 5. **traceview**:一个图形...

    android adb命令

    ### Android ADB命令详解 #### 一、ADB简介与工作原理 ADB(Android Debug Bridge)是一种用于Android设备的命令行工具,它允许开发者在计算机上与Android设备进行通信。ADB可以用于多种目的,如安装应用、文件...

    platform-tools_r28.0.2-windows

    平台工具(Platform Tools)是Android开发环境中的一个重要组成部分,它包含了一系列用于与Android设备交互的命令行工具。在“platform-tools_r28.0.2-windows”这个版本中,我们看到的是针对Windows操作系统的一个...

    android log file

    在Android系统中,日志文件扮演着至关重要的角色,它们提供了系统运行状态、应用程序行为以及错误信息的关键记录。本文将详细介绍Android平台上的主要日志类型,包括普通日志和异常日志,帮助开发者更好地理解和利用...

    bugreport-venus-TKQ1.220829.002-2024-04-18-00-45-35.zip

    2. **dumpstate_board.txt** 和 **dumpstate_log.txt**:这两个文件是系统状态的详细快照,通常包含设备的硬件配置、系统服务状态、系统环境变量、运行进程等信息。它们为开发者提供了系统底层状态的深度洞察,有助...

    platform-tools_r34.0.1-linux.zip

    6. **渲染名称解析工具**(如果包含):例如`dumpsys`, `dumpstate`等,这些工具可以获取Android系统的当前状态信息,如电池状态、运行服务等,对于故障排查和调试非常有用。 7. **AAPT (Android Asset Packaging ...

Global site tag (gtag.js) - Google Analytics