Android内存监测之procrank procmem

Android内存监测之procrank procmem

 

Android系统中提供了两个命令行工具procrank、procmem用于查看系统中的内存使用情况。这两个工具对于我们分析内存相关问题非常有效。由于Android系统使用的是Linux内核,理论上这样的工具可以在Linux上运行。本质上通过proc内信息统计计算。

  • procrank可以查看系统中所有进程的整体内存占用情况,并按照规则排序。
  • procmem可以针对某个特定的进程分析其堆、栈、共享库等内存占用情况。

手机中的sh是经过精简过的,有些手机可能没有 procrank 命令,

需要下载procrank 和 procmem 可链接:android内存监测之procrank 或 android内存监测之procmem

 

procrank (only for Android)

从/proc/pid/maps中读取信息来进行统计。源码位于:/system/extras/procrank

需要自己编译源码的可参考github:https://github.com/ZaccurLi/procrank_procmem

信息介绍

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

• VSS

 - Virtual Set Size

虚拟耗用内存(包含共享库占用的内存)

单个进程全部可访问的地址空间

• RSS

- Resident Set Size

实际使用物理内存(包含共享库占用的内存)

单个进程实际占用的内存大小,对于单个共享库, 尽管无论多少个进程使用,实际该共享库只会被装入内存一次

• PSS

- Proportional Set Size

 实际使用的物理内存(比例分配共享库占用的内存)

• USS

- Unique Set Size

进程独自占用的物理内存(不包含共享库占用的内存)

USS 揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小.

USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。

怀疑某个程序有内存泄露可以查看这个值是否一直有增加。

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

 

procrank功能:

获取所有进程的内存使用的排行榜,默认是按照PSS降序排列即以Pss的大小而排序。

procrank命令比dumpsys meminfo命令,能输出更详细的VSS/RSS/PSS/USS内存指标。

通常可以配合脚本运行,实时监测内存变化:

#!/bin/bash

while true; do

adb shell procrank | grep "xxxxxx"

#pause 0.1second

sleep 0.1

运行该脚本: ./trackmem.sh

这个脚本的用途是每0.1秒钟让系统输出一次xxxxxx的内存使用状况

procrank -h显示帮助 

# sudo ./procrank -h

Usage: ./procrank [ -W ] [ -v | -r | -p | -u | -s | -h ]

    -v  Sort by VSS.

    -r  Sort by RSS.

    -p  Sort by PSS.

    -u  Sort by USS.

    -s  Sort by swap.

        (Default sort order is PSS.)

    -R  Reverse sort order (default is descending).

    -c  Only show cached (storage backed) pages

    -C  Only show non-cached (ram/swap backed) pages

    -k  Only show pages collapsed by KSM

    -w  Display statistics for working set only.

    -W  Reset working set of all processes.

    -h  Display this help screen.

默认直接命令 

BBH100:/ # procrank

  PID       Vss      Rss      Pss      Uss  cmdline

 2145   486328K  273728K  198544K  186440K  system_server

 2422   871360K  154844K   86987K   80256K  com.google.android.inputmethod.latin

……

1190    10252K    1920K     539K     524K  /vendor/bin/seemp_healthd

                           ------   ------  ------

                          1404868K  1168344K  TOTAL

 

 RAM: 5862740K total, 1615392K free, 160128K buffers, 2367748K cached, 1112K shmem, 241616K slab

BBH100:/ #

 

 

 

procmem

procrank 给出了系统整体的内存占用情况,针对每一个进程具体分析就要使用procmem工具了。

同样运行procmem需要root权限。

procmem 给出了procrank中VSS、RSS、PSS、USS的每一部分组成,包括进程可执行程序本身、共享库、堆、栈的内存占用。这里的信息应该是从/proc/pid/maps文件中获取的.

BBH100:/ # procmem

Usage: procmem [ -w | -W ] [ -p | -m ] [ -h ] pid

    -w  Displays statistics for the working set only.

    -W  Resets the working set of the process.

    -p  Sort by PSS.

    -m  Sort by mapping order (as read from /proc).

    -h  Hide maps with no RSS.

1|BBH100:/ # procmem 1190

    Vss      Rss      Pss      Uss     ShCl     ShDi     PrCl     PrDi  Name

-------  -------  -------  -------  -------  -------  -------  -------

     4K       4K       4K       4K       0K       0K       4K       0K  /vendor/bin/seemp_healthd

     4K       4K       4K       4K       0K       0K       4K       0K  /vendor/bin/seemp_healthd

     4K       4K       4K       4K       0K       0K       4K       0K  /vendor/bin/seemp_healthd

  4096K     104K     104K     104K       0K       0K     104K       0K  [anon:libc_malloc]

……

  432K      12K      12K      12K       0K       0K      12K       0K

     4K       4K       4K       4K       0K       0K       4K       0K

    28K      12K      12K      12K       0K       0K      12K       0K

   132K      36K      36K      36K       0K       0K      32K       4K  [stack]

-------  -------  -------  -------  -------  -------  -------  -------

 10252K    1920K     539K     524K      20K    1376K     520K       4K  TOTAL

BBH100:/ #

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值