解决CPU使用过高问题

  • android层

方法一:

1.用android studio打开android Profile工具

2.可以选择添加哪个进程进行监听:

3.点击第一个CPU进入CPU监听界面

4.点击record记录cpu使用情况:

5.以wifi为例,开始操作手机设置里面的wifi开关,操作完后,点击停止。这时候会生成cpu使用情况表:表是按照执行的顺序显示,将鼠标移动到上面可以看到具体类名和方法名以及耗时多少,然后对该方法进行修改。

Profile支持四种方式显示执行的方法。

  1. Call Chart:通过执行的顺序显示;
  2. Flame Chart:通过火焰图显示;
  3. Top Down:自顶向下调用显示;
  4. Bottom Up:自底向上调用显示;

6.也可以使用adb 查看cpu使用情况,如:

第一组数据的含义:

 

    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  进程的名称

使用的命令是adb shell top –m 20 –s cpu 

注:20表示显示cpu耗时前20的进程(可以改成10或者更少的数字),-s cpu表示按照cpu这一列排序

方法二:

1, 确定cpu过高进程

输入 adb shell top -m 10 确定排名前10的进程

然后按ctrl+c退出

  1. DDMS抓取进程调用函数

进入C:\Users\Administrator\AppData\Local\Android\Sdk\tools,双击monitor.bat

  1. 选中进程

如红色框所示

  1. 抓取调用函数

如红色框所示,数字表示几步,然后点击ok

  1. 停止抓取

点击红色框停止

停止后的界面如下,鼠标放到日志上面显示存放路径,该图表示存放在

C:\Users\Administrator\AppData\Local\Temp

  1. 分析数据

黑色区域表示cpu繁忙,一直在处理指令。通过分析进程调用堆栈,发现wifimanager处理wifi过滤结果非常耗时。

  • native 层

1, 确定cpu过高进程

输入 adb shell top -m 10 确定排名前10的进程

2, 抓取进程数据

 Perf record -p Pid --call-graph fp -o data/perf.data

3, 解析进程数据

  Perf report -g -i data/perf.data > data/perf.log

从手机中拖出日志,可以直观的看出哪个函数消耗cpu比较高

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值