记一次 Android CPU高使用率排查

本文描述了如何通过adbshell工具排查一款App的CPU占用率问题,重点关注了top命令、线程分析和堆栈信息的收集过程,以帮助开发者解决类似问题。
摘要由CSDN通过智能技术生成

背景

测试同学反馈我们的App CPU使用率 90% 居高不下,经过一番艰难的排查后定位到了问题,为了记录此次过程于是有了此博客的构思,但为了避免隐私泄露,本文使用的是demo工程,但是排查思路完全一致

排查高占用的进程

adb shell

top

在这里插入图片描述
在这里插入图片描述

我们发现 com.demo.app CPU占用率竟然高达 93.3%, 对应的 pid 是 29337

top -b -H -n 1 | grep 29337 (打印各线程 cpu使用详情)

在这里插入图片描述
高负荷调用的是 Thread-2 和 com.demo.app 线程

kill -3 29337 (生成trace文件)

在这里插入图片描述

adb pull /data/anr /Users/gerry.liang/Desktop

在这里插入图片描述在这里插入图片描述
根据 Thread-2 线程名匹配到了 对应的 堆栈信息
在这里插入图片描述

定位问题

在这里插入图片描述

补充说明:

上述排查过程适用于 CPU 居高不下 或者 内存居高不下
如果CPU在某段时间较高但是之后就下降了就不好排查了, 不过也有笨方法

  1. CPU 每隔1s 打印线程使用情况 while true;do top -b -H -n 1 | grep 1597 |head -n 5;sleep 1;done
  2. CPU 每隔1s 生成 trace文件 while true;do kill -3 1597;sleep 1;done

先找1中CPU使用率异常的时刻和对应的线程名, 再找 2中对应时刻的堆栈。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值