在开发过程中,我们会遇到手机的CPU使用率过高而引发的问题,那接下来,我对这方面知识做些整理及归纳
1. CPU使用背景知识:
CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。

而Android关于进程使用率的限制:

前台进程不超过95%,后台进程5%, 但是在系统没有前台进程时,后台进程可以超过5%

(关于什么是前/后台进程,我就不啰嗦了)

2. 可能引发的问题

CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR等等一系列问题。

3. 解决方案

a. 如果已经导致ANR, 则去log里面搜索"ANR in"

b. 没有导致ANR则

先看看当前CPU使用状况,看看是不是别人占太多了,把CPU用得太狠

adb shell top

User 19%, System 16%, IOW 0%, IRQ 0%
User 63 + Nice 0 + Sys 53 + Idle 200 + IOW 1 + IRQ 0 + SIRQ 0 = 317

PID PR CPU% S  #THR     VSS       RSS      PCY    UID        Name
    187  0    14%     S    19      72560K   8484K     fg    system   /system/bin/surfaceflinger
  7499  0      4%     S    40   385420K   54392K   bg   9992       com.htc.album
19792  0     3%      R     1         1128K   468K       fg     root         top

注:PCY就是显示是前台进程(fg)还是后台进程(bg)

如果还是自己应用的问题,则使用TraceView进行debug

TraceView说明(摘自网上)

TraceView
    1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等
 2)方法:
  a)在程序代码中加入追踪开关
  import android.os.Debug;
  ……
  android.os.Debug.startMethodTracing(“/data/tmp/test”);// 先建/data/tmp目录
  ……// 被追踪的程序段
  android.os.Debug.stopMethodTracing();
  b)编译,运行后,设备端生成/data/tmp/test.trace文件
  c)把trace文件复制到PC端
  $ adb pull /data/tmp/test.trace ./
  d)使用android自带工具分析trace文件
  $ANDROID_SRC/out/host/linux-x86/bin/traceview test.trace
  此时可看到各个函数被调用的次数CPU占用率等信息
  e)使用android自带工具分析生成调用关系类图
  $ apt-get install graphviz# 安装图片相关软件
  $ANDROID_SRC/out/host/linux-x86/bin/dmtracedump -g test.png test.trace
  此时目录下生成类图test.png
 3)注意
  trace文件生成与libdvm模块DEBUG版本相冲突,所以此方法只适用于对非DEBUG版本模拟器的调试,否则在分析trace文件时会报错

通过上述方法找到占用CPU过高的代码,根据之前的知识(后台进程CPU使用率 < 5%),把该代码段放到后台进程中执行或开低优先级的Thread去执行。

如何解决CPU使用率过高问题相关推荐

  1. 服务主机本地系统占cpu_如何通过“服务主机:本地系统(网络受限制)”解决CPU使用率过高的问题

    服务主机本地系统占cpu On some Windows 10 PCs, the "Service Host: Local System (Network Restricted)" ...

  2. Windows上erl.exe的CPU使用率很高的问题【未解决】

    Windows上erl.exe的CPU使用率很高的问题[未解决] 参考文章: (1)Windows上erl.exe的CPU使用率很高的问题[未解决] (2)https://www.cnblogs.co ...

  3. linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  4. CPU使用率过高的原因及解决方法

    常见的CPU使用率过高可不是职场CPU哦,而是电脑的中央处理器,CPU作为计算机系统重要的运算和控制核心,可谓是"很忙"的存在.在我们日常使用电脑设备时,由于打开的软件.游戏.网页 ...

  5. mysql的cpu使用率突然增高_mysql cpu使用率过高解决方法

    mysql cpu使用率过高解决方法 1 mysql查看正在运行的语句 并且查看运行最多的mysql语句 MySQL 打开 general log 后,所有的查询语句都会记录在 general log ...

  6. linux主机sys使用率忽高忽低,cpu使用率忽高忽低的原因和解决方法

    小编最近经常听说有的 人电脑cpu使用率老是忽高忽低,也不知道怎么回事虽然没怎么影响使用但是这无疑是一个潜在的隐患等到这个隐患爆发了对电脑的伤害可想而知,今天小编就来和大家说说cpu使用率忽高忽低的原 ...

  7. Win10音频设备图形隔离占用CPU使用率过高怎么解决

    系列文章目录 文章目录 系列文章目录 前言 一.具体步骤 前言 我们经常在使用电脑的时候,会经常遇到电脑很卡,打开任务管理器,查看是哪个程序在占用电脑大量资源的时候,发现名为Windows音频设备图形 ...

  8. 解决 SQL Server 中 CPU 使用率过高的问题

    本文提供了诊断和修复运行 Microsoft SQL Server 的计算机上 CPU 使用率过高导致的问题的过程. 尽管在 SQL Server 中出现 CPU 使用率过高有许多可能原因,但以下原因 ...

  9. window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

最新文章

  1. 从面试官的角度谈谈大数据面试
  2. sscanf函数中类型不匹配警告引发的BUG和思考
  3. javascript中作用域、全局作用域、局部作用域、隐式全局变量、块级作用域、作用域链、预解析
  4. C++结构体作为函数参数传参
  5. Mysql锁定表/解锁句法
  6. mongodb java驱动_Java的MongoDB驱动及读写策略
  7. 我发现我对人类活动的认识开始有一点点变化了
  8. Android:ViewPager
  9. SSE3指令集系列----数据加载与算术运算指令
  10. 安全扫描利器-xscan3.3中文版
  11. 【软件工程师学硬件】之 单片机
  12. 颜色的前世今生10·HSB拾色器详解
  13. 过拟合与欠拟合的生动理解
  14. Python+Matplotlib绘制饼状图模拟南丁格尔玫瑰图
  15. CAD中插入外部参照字体会变繁体_CAD中形形色色的“替换”技巧你确定都知道了?...
  16. 【技巧】解决谷歌浏览器自带的谷歌翻译无法自动翻译问题
  17. 2022数模国赛河南赛区获奖名单
  18. 【Canvas】js用Canvas绘制阴阳太极图动画效果
  19. mac无线网连上没网络连接网络连接服务器,无线网络连接上但上不了网
  20. 近千只股票跌停 沪指暴跌281点创历史之最

热门文章

  1. 北邮+校徽+logo+矢量图+透明
  2. linux php环境搭建教程,linux php环境搭建教程
  3. HTML文件转JSP文件
  4. Android实现画板工具 (实现涂写、清除、擦除、保存功能)
  5. Java设计模式之工厂模式篇 (转)
  6. scala并发_探索Scala并发
  7. 利用github pages做免费静态网站个人免费域名空间
  8. 监控服务zabbix
  9. 《通信技术导论(原书第5版)》——导读
  10. php开心农场游戏源码,解密开源版开心农场游戏小程序分享