zt:android 内存分析


一、概述

1.1 内存指标概念

Item全称含义等价

USSUnique Set Size物理内存进程独占的内存

PSSProportional Set Size物理内存PSS= USS+ 按比例包含共享库

RSSResident Set Size物理内存RSS= USS+ 包含共享库

VSSVirtual Set Size虚拟内存VSS= RSS+ 未分配实际物理内存

故内存的大小关系:VSS >= RSS >= PSS >= USS

1.2 内存分析命令

常用的内存调优分析命令:

dumpsys meminfo

procrank

cat /proc/meminfo

free

showmap

vmstat



二 命令说明

1. dumpsys meminfo

dumpsys meminfo命令的输出结果分以下4部分:

序列划分类型排序解释

1processPSS以进程的PSS从大到小依次排序显示,每行显示一个进程;

2OOM adjPSSNative/System/Persistent/Foreground/Visible/Perceptible/A Services/Home/B Services/Cached,分别显示每类的进程情况

3categoryPSS以Dalvik/Native/.art mmap/.dex map等划分的各类进程的总PSS情况

4total-总内存、剩余内存、可用内存、其他内存

命令内容:

Total PSS by process://以process来划分

167128kB: com.android.systemui (pid4395)

124527kB: system (pid1192)

44213kB: com.android.settings (pid29256/ activities)

41822kB: surfaceflinger (pid391)

...

Total PSS by OOM adjustment://以oom来划分,会详细列举所有的类别的进程,此处省略.

183683kB: Native42024kB: surfaceflinger (pid388)

16740kB: mediaserver (pid471)

16040kB: zygote (pid494)

...124527kB: System

344259kB: Persistent

69719kB: Foreground

49026kB: Visible

34005kB: Perceptible

7880kB: A Services

58689kB: Home

98352kB: B Services

94888kB: Cached

Total PSS by category:// 以category划分

309449kB: Dalvik

230330kB: Native

45344kB: EGL mtrack

117797kB: .so mmap

54389kB: .art mmap

44886kB: .dex mmap

32428kB: Dalvik Other

31083kB: .oat mmap

29456kB: Stack

21782kB: Gfx dev

21733kB: Unknown

12695kB: .apk mmap

9367kB: Other mmap

2169kB: .ttf mmap

2062kB: Other dev

38kB: .jar mmap

12kB: Ashmem

8kB: Cursor

0kB: GL mtrack

0kB: Other mtrack//整体情况Total RAM:2857032kB (status moderate)

Free RAM:1439488kB (94888cached pss +344620cached kernel +999980free)

Used RAM:1280552kB (970140used pss +310412kernel)

Lost RAM:136992kB

ZRAM:4kB physical usedfor0kBinswap (524284kB total swap)

Tuning:256(large512), oom525000kB, restore limit175000kB (high-end-gfx)


另外,可只输出某个pid或package的进程信息:

dumpsys meminfo // 输出指定pid的某一进程dumpsys meminfo --package// 输出指定包名的进程,可能包含多个进程

2. procrank

功能: 获取所有进程的内存使用的排行榜,排行是以Pss的大小而排序。procrank命令比dumpsys meminfo命令,能输出更详细的VSS/RSS/PSS/USS内存指标。

最后一行输出下面6个指标:

totalfreebufferscachedshmemslab

执行结果:

root@Phone:/# procrankPID      Vss      Rss      Pss      Uss  cmdline43952270020K202312K136099K121964K  com.android.systemui11922280404K147048K89883K84144K  system_server292562145676K97880K44328K40676K  com.android.settings5011458332K61876K23609K9736K  zygote42392105784K68056K21665K19592K  com.android.phone479164392K24068K17970K15364K  /system/bin/mediaserver391200892K27272K15930K11664K  /system/bin/surfaceflinger...RAM:2857032K total,998088K free,78060K buffers,459780K cached,312K shmem,92392K slab

3. cat /proc/meminfo

功能:能否查看更加详细的内存信息

指令: cat /proc/meminfo

对于cache和buffer也是系统可以使用的内存。所以系统总的可用内存为 MemFree+Buffers+Cached

4.free

主功能:查看可用内存,缺省单位KB。该命令比较简单、轻量,专注于查看剩余内存情况。数据来源于/proc/meminfo。

5. showmap

主功能:用于查看虚拟地址区域的内存情况

用法:showmap-a[pid]

6. vmstat

主功能:不仅可以查看内存情况,还可以查看进程运行队列、系统切换、CPU时间占比等情况,另外该指令还是周期性地动态输出。



小结

dumpsys meminfo适用场景: 查看进程的oom adj,或者dalvik/native等区域内存情况,或者某个进程或apk的内存情况,功能非常强大;

procrank适用场景: 查看进程的VSS/RSS/PSS/USS各个内存指标;

cat /proc/meminfo适用场景: 查看系统的详尽内存信息,包含内核情况;

free适用场景: 只查看系统的可用内存;

showmap适用场景: 查看进程的虚拟地址空间的内存分配情况;

vmstat适用场景: 周期性地打印出进程运行队列、系统切换、CPU时间占比等情况;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 一、概述 1.1 内存指标概念 Item 全称 含义 等价 USSUnique Set Size物理内存进程独占的...
    tiger桂阅读 2,666评论 0 0
  • 事情的终局强如事情的起头;存心忍耐的,胜过居心骄傲的。---传道书7:8 RAM(random-access me...
    小草凡阅读 3,125评论 2 2
  • 1.1Android的官方文档主要提供了四种优化策略 1.Disable JIT,运行时动态编译,JIT编译出来的...
    android之子阅读 7,015评论 3 10
  • 那些年我们用过的显示性能指标Android客户端性能优化(魅族资深工程师毫无保留奉献)这一次,我优化了37%的内存...
    Art_Collector阅读 10,387评论 2 22
  • 脑科学的洞见 心流基因组计划想要寻找的,是进入三种状态的出神技术。 第一个是心流,也就是flow,忘我地投入工作,...
    sageness阅读 234评论 0 0