使用Android Studio 自带的monitors查找App CPU 使用率过高的原因
来源:互联网 发布:淘宝二手iphone能买吗 编辑:程序博客网 时间:2024/05/11 05:25
最近遇到一个问题,就是我们的应用多打开几个页面,直接就卡死了。一般一个应用卡死,无外乎是CPU使用过高,或者内存消耗过大。如果是内存泄露导致的内存消耗过大,那么至少几十个甚至上百个Activity泄露才会导致卡死不动。而我们的应用是多打开几个页面就卡死了,那我猜测是CPU 消耗过高引起的。
什么情况下会消耗CPU 呢,就是大量的运算。那么此时目标就很明确了。就是去查找是哪个Activity或者哪个方法有一直不停止的运算消耗CPU(比如:不停止的while 或者for 循环)。刚开始我走了弯路,用肉眼去检查代码,后来发现效率太低。此时想起了Android Studio 自带的monitor ,注意我红色框和绿色框标记的位置。
双击我绿色框标记的这个按钮,就会生成这么一个文件,如图:
看,上图就一目了然的看到了耗费CPU 都有哪些方法。此时点击黑色的文本,还能看到耗费CPU的明细:
于是问题就清晰明了。原来是EaseSmileUtils.addSmiles()方法在大量消耗CPU 。我打开这个方法看了下,原来里面对TextView的所有字符while遍历,遍历的同时又嵌套了一层for 循环。而当我的页面的TextView特别多时,这些循环加一次就能执行上万次。所以导致CPU 瞬间上升。
我对这个循环嵌套进行了优化,无论打开多少个Activity 都不会出现CPU飙升了,问题就解决了。
此外,Android Monitor 的工具还可以查看内存泄露,网络连接流量使用。都是很使用的工具。少年,去发掘吧。
=====================================
如果你觉得帮到了你,请给作者打赏一口饭吃:
- 使用Android Studio 自带的monitors查找App CPU 使用率过高的原因
- android monitors的使用
- 解决office 带来的CPU使用率过高
- 【cpu温度过高的原因】
- 性能分析3~jstack命令分析:死锁原因、cpu使用率过高的线程
- 我们使用jdk自带的jstack来分析。当linux出现cpu被java程序消耗过高时
- spoolsv.exe占CPU使用率过高的问题
- 如何解决服务器CPU使用率过高的问题<一>
- 如何解决服务器CPU使用率过高的问题<二>
- 如何解决服务器CPU使用率过高的问题
- 关于Win7 NT Kernel cpu 使用率过高的解决方法
- PHP 防止 while true循环 CPU 使用率过高的方法
- ORACLE 临时表空间使用率过高的原因及解决方案
- ORACLE 临时表空间使用率过高的原因及解决方案
- ORACLE 临时表空间使用率过高的原因及解决方案
- ORACLE 临时表空间使用率过高的原因及解决方案
- ORACLE 临时表空间使用率过高的原因及解决方案
- ORACLE 临时表空间使用率过高的原因及解决方案
- codevs1014 装箱问题
- k-邻近算法(二)
- Android 中EditText的密码明文与密文显示
- jzoj P2151【2017.7.7普及】分数
- Python一些常见的字符串处理函数
- 使用Android Studio 自带的monitors查找App CPU 使用率过高的原因
- Ubuntu 16.04 几个国内更新源
- ssm框架整合记录
- error C3861 CComVariant 找不到标识符
- python_爬取新浪新闻
- leetcode之Construct Binary Tree from Inorder and Postorder Traversal 问题
- vs的一些坑
- js定时器
- 两个类之间转换JSON.parseObject(