记一次 Android CPU高使用率排查

文章目录

  • 背景
  • 排查高占用的进程
    • adb shell
    • top
    • top -b -H -n 1 | grep 29337 (打印各线程 cpu使用详情)
    • kill -3 29337 (生成trace文件)
    • adb pull /data/anr /Users/gerry.liang/Desktop
    • 定位问题
  • 补充说明:

背景

测试同学反馈我们的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中对应时刻的堆栈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450080.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【问题解决】VSCode1.86.0版+拓展Remote-SSHv0.108 无法连接到VSCode服务器(VSCode无法远程连接到Linux)

作者在下午五点左右照常通过VSCode远程连接Ubuntu主机编写代码,突然在一次重启VSCode后,不管如何尝试都连接不到Linux主机,首先自己尝试了重启电脑,无效;然后尝试通过其他软件(XShell和Xftp)远程…

鸿蒙应用开发-自定义可删除列表弹窗

功能介绍: 自定义列表弹窗,可以对弹窗的列表点击删除,参考文档创建列表,自定义弹窗文档自定义弹窗(CustomDialog)。 知识点: 熟悉对List控件的使用。熟悉对List点击删除熟悉自定义弹窗。 使…

算法:阿里巴巴找黄金宝箱(II)

一、算法描述 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0-N的箱子, 每个箱子上面贴有箱子中藏有金币Q的数量。 从金币数量中选出一个数字集合, 并销毁贴有这些数字的每个箱子&…

20240203在WIN10下安装Anaconda

20240203在WIN10下安装Anaconda 2024/2/3 20:45 缘起:最近学习stable-diffusion-webui.git,在Ubuntu20.04.6下配置SD成功。 不搞精简版本:Miniconda了。直接上Anacoda! 百度搜索:Anaconda 下载 https://www.anaconda.c…

Python tkinter (11) —— Frame控件

本文主要是Python tkinter Frame框架控件介绍及使用简单示例。 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkint…

【运维备忘录】之 Curl 命令

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

java数据结构与算法刷题-----LeetCode15. 三数之和

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 和LeetCode1.两数之和一样,但是这道题边界条件更多。…

2021-10-18 51蛋骗鸡数码管显示0-F每6个切换循环

缘由我的单片机流水灯程序不知道为什么无法很好的显示? - 24小时必答区 #include "REG52.h" sbit K1 P3^0; sbit K2 P3^1; sbit K3 P3^2; sbit K4 P3^3; sbit bpP3^4; bit k1,wk0; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,111,119,124,57,94…

LabVIEW汽车自燃监测预警系统

LabVIEW汽车自燃监测预警系统 随着汽车行业的飞速发展,汽车安全问题日益受到公众的关注。其中,汽车自燃现象因其突发性和破坏性,成为一个不可忽视的安全隐患。为了有效预防和减少自燃事故的发生,提出了LabVIEW的汽车自燃监测预警…

【Java程序设计】【C00240】基于Springboot的班级综合测评管理系统(有论文)

基于Springboot的班级综合测评管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的班级综合测评管理系统 本系统分为学生功能模块、管理员功能模块以及教师功能模块。 管理员功能模块:管理员功能…

Leetcode高频题:198打家劫舍1

题目链接力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相…

Jetpack Compose系列(3)-使用列表

使用列表 在 View 体系中,创建自定义布局必须扩展 ViewGroup 并实现测量和布局函数。在 Compose 中,只需使用 Layout 可组合项编写一个(布局)函数即可。上一篇文章我们详细介绍了Column()和Row()这两各横向布局,这里我们继续介绍其他布局。 …