【优化】如何检测移动端 CPU 以及内存占用率
原文 http://taobaofed.org/blog/2015/12/04/cpu-allocation-profiler/

前言
6 月底的时候淘宝众筹的 H5 接入到了支付宝钱包,上线前支付宝钱包就对性能提出了明确要求:即页面静态下 app 的 CPU 消耗要低于 10%。我面临的第一个问题并不是如何优化,而是要如何便利地查看 CPU 的占用率。CPU 占用率的有效分析对于性能优化是至关重要的。因此,本文并不会讲移动端 CPU 占用率的优化,而是讲其“前戏”——如何查看移动端的 CPU 以及内存占有率。
Android ADB 命令查看
- 安装 JDK,下载并安装
- 安装 SDK:
- 下载地址,下载后的压缩包,可以解压在任意目录下,不需要安装操作。
- 进入 android-sdk-macoxs/tools 文件夹,双击 Android 文件启动 Android SDK Manager, 如下图
- 选择列表中你需要的平台,并安装。
- 配置环境变量
打开终端,home 目录下打开 .bash_profile 文件并写入
export PATH=${PATH}:/Users/{{sdk 存放目录}}/android-sdk-macosx/tools
|
- 手机连接电脑开启 USB 调试模式,进入 adb shell
- 查看 CPU 占用率
- 查看 CPU 占用排名前 5 的程序并间隔 3 秒输出
top -m 5 -t -d 3(-m 最大数;-t 显示进程名;-d刷新间隔),如下图:
- 查看 CPU 占用排名前 5 的程序并间隔 3 秒输出
- 根据进程名查看其 CPU 占用率 `top -d 3| grep com.taobao.trip`(例如查看阿里旅行的 CPU 占用率))
- 查看内存使用情况
adb shell dumpsys meminfo <package_name>或adb shell dumpsys meminfo <package_id>
Android Studio 自带 CPU 和内存检测功能
Android Studio 有自带的 CPU 和内存检测功能
- 检测是否安装 Java 虚拟机 JDK ,若没有则进行 下载并安装;若已安装,则检测版本号,低于 6 则不可用,检测方法
javac -version |
- 安装 Android Studio,下载地址 http://developer.android.com/sdk/index.html
- 手机连接电脑开启 USB 调试模式,并打开 Android Studio,看到如图:
- 点击上图标注 1 ,在标注 2 中选择要调试的手机,标注 3 中选择要检测的应用进程,例如 ‘com.eg.android.AlipayGphone’ 即支付宝。点击标注 4 即进行内存的监控,标注 5 即是对CPU的监控。
- 内存的监控如下:
- CPU 监控如下:
Eclipse 之 DDMS
Eclipse 可以通过 DDMS 检测内存,但是要在 Eclipse 中检测 CPU 占用需要安装插件,我试用了插件 APT 发现并不好用,因此就不介绍了。下面介绍在 Eclipse 中通过 DDMS 检测内存使用情况。
手机连接电脑开启 USB 调试模式,并打开 Eclipse
点击工具栏 Window -> Open Perspective -> Other -> DDMS,如下图:
- 标注 1 区域为当前虚拟机上的程序列表,选择要检测的程序,点击标注 3 给改程序设置 heap Updates,在标注 2 Heap 视图中点击 Cause GC 就可以看到该程序的内存使用情况。
结语
希望这篇文章能够减少同学们在检测 CPU 及内存上花费的时间,从而有更多的时间去研究如何优化的问题。
【优化】如何检测移动端 CPU 以及内存占用率的更多相关文章
- wince下的CPU和内存占用率计算
#include <Windows.h> DWORD Caculation_CPU(LPVOID lpVoid) { MEMORYSTATUS MemoryInfo; DWORD Perc ...
- linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定
背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[root@test vhost]# ps auxUSER ...
- linux ps命令,查看进程cpu和内存占用率排序(转)
使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 % ...
- IIS解决CPU和内存占用率过高的问题
发现进程中的w3wp占用率过高. 经过查询,发现如下: w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运 ...
- 压测过程中,CPU和内存占用率很高,案例简单分析
Q: 最近公司测试一个接口,数据库采用Mongo 并发策略:并发400个用户,每3秒加载5个用户,持续运行30分钟 数据量:8000条左右 压测结果发现: TPS始终在5左右 ...
- Linux下查看CPU、内存占用率
linux下查看最消耗CPU.内存的进程 CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 内存消耗最多的前10个进程: ps ...
- Linux 下用管道执行 ps aux | grep 进程ID 来获取CPU与内存占用率
#include <stdio.h> #include <unistd.h> int main() { char caStdOutLine[1024]; // ps ...
- 【转载】Linux下查看CPU、内存占用率
不错的文章(linux系统性能监控--CPU利用率):https://blog.csdn.net/ctthuangcheng/article/details/52795477 在linux的系统维护中 ...
- linux系统cpu和内存占用率
1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...
随机推荐
- Trystrtofloat
TryStrToFloat为 ‘+1’和‘-1’和 ‘.1’是可以装换成功的
- [FMX]将 Android 程序切换到后台及从后台切换到前台实现
有时候,我们需要将自己的Android程序切换到后台运行,在必要时,将其切换到前台运行.下面提供了一种实现方式,首先需要引用三个单元: 1 uses Androidapi.JNI.App,Andr ...
- NetCore入门篇:(十二)在IIS中部署Net Core程序
一.简介 微软已经为net在iis中的部署提供了良好的支持,在IIS中部署NetCore是一件很容易的事. 二.在IIS中部署Net Core程序 1.微软官方文档有详细说明.进入 2.如果你已经熟悉 ...
- C# AutoMapper 了解一下
什么是AutoMapper? 简单来说就是将一个对象映射到另一个对象的代码. 摆脱了繁琐的赋值过程 (最常见也就是Model -——ViewModel) AutoMapper安装 我使用的是VS201 ...
- Kettle有什么功能
转载地址:https://www.cnblogs.com/gala1021/p/7814712.html 简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux. ...
- Pacemaker 介绍
1. 简介 Pacemaker是一个集群资源管理者.他用资源级别的监测和恢复来保证集群服务(aka.资源)的最大可用性.它可以用你所擅长的基础组件(Corosync或者是Heartbeat)来实现通信 ...
- 洛谷P4197 Peaks&&克鲁斯卡尔重构树学习笔记(克鲁斯卡尔重构树+主席树)
传送门 据说离线做法是主席树上树+启发式合并(然而我并不会) 据说bzoj上有强制在线版本只能用克鲁斯卡尔重构树,那就好好讲一下好了 这里先感谢LadyLex大佬的博客->这里 克鲁斯卡尔重构树 ...
- django 视图中执行原生的 sql 查询语句
可以使用objects的raw()方法执行原生的sql语句,进行对数据库的查询操作,raw()方法只能执行查询语句 query_set = your_model.objects.raw("s ...
- jQuery基础笔记(4)
day55 参考:https://www.cnblogs.com/liwenzhou/p/8178806.html#autoid-1-9-3 文本操作 HTML代码: html()// 取得第一个匹配 ...
- 八,mysql优化——读写分离
读写分离目的是给大型网站缓解查询压力.