Android 卡顿分析

卡顿原因

造成Android系统卡顿的原因有很多,但是追根究底都会反映在cpu时间上.通过分析内存信息和cpu信息就可以为我们提供解决卡顿的思路和方向

内存和cpu状态

使用

adb shell dumpsys meminfo

可以很方便的查看各个进程的进程id (pid) ,在得到要查询的进程的进程id后可以使用

 adb shell dumpsys meminfo 进程id

来查看当前进程id下的进程内存和cpu使用情况。

图中即为进程号为28868的信息


dumpsys_meminfo.png

使用

top -pid <进程id>
top.png

命令可以得到各进程的cpu 使用情况,也可以使用

adb shell dumpsys cpuinfo
dumpsys_cpuinfo.png

几个常用的命令。例 如,top 命令可以帮助我们查看哪个进程是 CPU 的消耗大户;vmstat 命令可以实时动态 监视操作系统的虚拟内存和 CPU 活动;strace 命令可以跟踪某个进程中所有的系统调 用。

Android 卡顿排查工具

按照上面各种 Linux 命令组合来排查问题太麻烦了.

在android中 Traceview 和 systrace 都是我们比较熟悉的排查卡顿的工具,从实现上 这些工具分为两个流派。

第一个流派是 instrument。获取一段时间内所有函数的调用过程,可以通过分析这段时间 内的函数调用流程,再进一步分析待优化的点。

第二个流派是 sample。有选择性或者采用抽样的方式观察某些函数调用过程,可以通过 这些有限的信息推测出流程中的可疑点,然后再继续细化分析。

这两种流派有什么差异?我们在什么场景应该选择哪种合适的工具呢?还有没有其他有用 的工具可以使用呢?下面我们一一来看。

1.TraceView

通过记录下cpu时间片段执行的方法耗时,来定位耗时方法,进而进行定位问题
可以使用android studio 中的profiler分析工具进行记录,通过生成trace文件进而分析问题,也可以使用代码进行插桩生成的.trace文件通过as打开进行分析,trace文件如下图

[站外图片上传中...(image-45a691-1580310027475)]

可以看到每个函数的具体的执行时间和调用栈以及当前的所有线程
这部分仅仅进行简单的说明,但是复杂问题的分析远没有这么简单,需要针对问题进行分析

2.systrace

首先需要python环境,在platform-toos/systrace文件夹下,执行 python systrace.py -l查看命令是否正常。

options选项
-o <FILE> 输出的目标文件
-t N, –time=N 执行时间,默认5s
-b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限
-k <KFUNCS>,–ktrace=<KFUNCS> 追踪kernel函数,用逗号分隔
-a <APP_NAME>,–app=<APP_NAME> 追踪应用包名,用逗号分隔
–from-file=<FROM_FILE> 从文件中创建互动的systrace
-e <DEVICE_SERIAL>,–serial=<DEVICE_SERIAL> 指定设备
-l, –list-categories 列举可用的tags
category 解释
gfx Graphics
input Input
view View System
webview WebView
wm Window Manager
am Activity Manager
sm Sync Manager
audio Audio
video Video
camera Camera
hal Hardware Modules
app Application
res Resource Loading
dalvik Dalvik VM
rs RenderScript
bionic Bionic C Library
power Power Management
sched CPU Scheduling
irq IRQ Events
freq CPU Frequency
idle CPU Idle
disk Disk I/O
mmc eMMC commands
load CPU Load
sync Synchronization
workq Kernel Workqueues
memreclaim Kernel Memory Reclaim
regulators Voltage and Current Regulators

e.g 输出5s内的所有信息到当前目录的trace.html

python systrace.py -b 32768 -t 5 -o trace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic power sched irq freq idle disk mmc load sync workq memreclaim regulators

e.g 输出包名为com.example.myapplication 10s内的所有信息到当前目录的trace2.html

systrace.py -t 10 -o trace2.html wm gfx input view sched freq -a com.example.myapplication

文件生成后可以使用chrome来打开。


systrace_1.png

systrace2.png

systarace3.png

根据生成的文件去分析具体问题,比如图片中的显示的问题就是layout过程中的耗时导致的丢帧以及在draw绘制过程的时间过长的问题。

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

推荐阅读更多精彩内容

  • 欢迎访问[Android日记][1],如有转载请注明Android日记 http://androiddiary.s...
    图乐阅读 472评论 0 1
  • Systrace Systrace是一个平台提供的工具,可以在很短的时间内记录设备活动。该工具生成一个报告,该报告...
    youseewhat阅读 3,009评论 0 3
  • ​ 今天看见写作群里一个写的很好的妈妈发来一篇文章,名为《如何成为学霸》,我一向喜欢学霸,点进去看,不禁大吃一惊,...
    站立小兔阅读 293评论 0 0
  • 文/鸿运 撑着油纸伞,走进阔别三十年的小巷。 再没有生机的身影,只看到几栋废墟的老房。 再没有出入的牛羊,连鸡狗野...
    HONGYUNDANGTOU阅读 670评论 34 25
  • 紫砂壶底的样式,主要有平底、一捺底、加底、钉足、梯形托榫足等。 1)平底——亦称“自身底”或“截底”,如扣碗状。是...
    妙取阅读 1,235评论 0 1