Android内存分析

Posted dx我是大雄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android内存分析相关的知识,希望对你有一定的参考价值。

  • 查看内存信息

  • dumpsys meminfo

umi:/ $ dumpsys meminfo com.dx.reflecttest

android 程序内存被分为2部分:native 和 dalvik, dalvik 就是java虚拟机中的堆,我们创建的对象就是在这里分配的,bitmap是直接在native上分配的,对于内存的限制是native+dalvik不能超过最大限制。

当TOTAL 16407 11792 12860 22275 18459 2003超过内存最大限制时会出现OOM错误。

 dumpsys [options]  

meminfo 显示内存信息  

cpuinfo 显示CPU信息  

account 显示accounts信息  

activity 显示所有的activities的信息  

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

wifi 显示wifi信息

adb shell top

C:\\Users\\13642>adb shell top --help

Toybox 0.8.4-android multicall binary: https://landley.net/toybox (see toybox --help)

usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]

Show process activity in real time.

-H      Show threads

-k      Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)

-o      Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)

-O      Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)

-s      Sort by field number (1-X, default 9)

-b      Batch mode (no tty)

-d      Delay SECONDS between each cycle (default 3)

-m      Maximum number of tasks to show

-n      Exit after NUMBER iterations

-p      Show these PIDs

-u      Show these USERs

-q      Quiet (no header lines)

User  处于用户态的运行时间,不包含优先值为负进程

Nice  优先值为负的进程所占用的CPU时间

Sys   处于核心态的运行时间

Idle  除IO等待时间以外的其它等待时间

IOW   IO等待时间

IRQ   硬中断时间

SIRQ  软中断时间

PID   进程id

PR    优先级

CPU%  当前瞬时CPU占用率

S     进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程

#THR  程序当前所用的线程数

VSS   Virtual Set Size  虚拟耗用内存(包含共享库占用的内存)

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

PCY   调度策略优先级,SP_BACKGROUND/SP_FOREGROUND

UID   进程所有者的用户id

Name  进程的名称

(1)实操

adb shell top | finstr cpu

Adb shell top -p 26858

以上是关于Android内存分析的主要内容,如果未能解决你的问题,请参考以下文章

Android Dalvik虚拟机 对象创建内存分配流程

Android Dalvik虚拟机 对象创建内存分配流程

Android平台上的Native内存分析

Android 内存指标与分析方法

Android最佳性能实践——分析内存的使用情况

Android使用procrank和dumpsysmeminfo分析内存占用情况